feat(workbench): persist operational workflows and events
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
from contextlib import contextmanager
|
||||
from uuid import uuid4
|
||||
|
||||
import pytest
|
||||
|
||||
from scripts.seed_peripheral_sample import (
|
||||
ACTOR_ID,
|
||||
previous_seed_result,
|
||||
restore_seeded_resources,
|
||||
)
|
||||
|
||||
|
||||
class FakeResult:
|
||||
def __init__(self, row=None):
|
||||
self.row = row
|
||||
|
||||
def fetchone(self):
|
||||
return self.row
|
||||
|
||||
|
||||
class FakeConnection:
|
||||
def __init__(self, row=None):
|
||||
self.row = row
|
||||
self.calls = []
|
||||
|
||||
def execute(self, statement, parameters):
|
||||
self.calls.append((" ".join(statement.split()), parameters))
|
||||
return FakeResult(self.row)
|
||||
|
||||
|
||||
class FakeStore:
|
||||
def __init__(self, row=None):
|
||||
self.connection_value = FakeConnection(row)
|
||||
self.readonly = None
|
||||
|
||||
@contextmanager
|
||||
def connection(self, readonly=False):
|
||||
self.readonly = readonly
|
||||
yield self.connection_value
|
||||
|
||||
|
||||
def test_previous_seed_result_reuses_legacy_receipt():
|
||||
resource_id = str(uuid4())
|
||||
store = FakeStore({
|
||||
"command_key": "create_work_order",
|
||||
"result": {"work_order_id": resource_id},
|
||||
})
|
||||
seed_request_id = uuid4()
|
||||
|
||||
result = previous_seed_result(
|
||||
store,
|
||||
"project-1",
|
||||
seed_request_id=seed_request_id,
|
||||
command_key="create_work_order",
|
||||
)
|
||||
|
||||
assert result == {"work_order_id": resource_id}
|
||||
assert store.readonly is True
|
||||
assert store.connection_value.calls[0][1] == (
|
||||
"project-1",
|
||||
str(ACTOR_ID),
|
||||
seed_request_id,
|
||||
)
|
||||
|
||||
|
||||
def test_restore_seeded_resources_only_restores_allowed_tables():
|
||||
store = FakeStore()
|
||||
resource_ids = [str(uuid4()), str(uuid4())]
|
||||
|
||||
restore_seeded_resources(
|
||||
store,
|
||||
"project-1",
|
||||
table="work_orders",
|
||||
id_column="work_order_id",
|
||||
resource_ids=resource_ids,
|
||||
)
|
||||
|
||||
statement, parameters = store.connection_value.calls[0]
|
||||
assert "UPDATE peripheral_sample.work_orders" in statement
|
||||
assert "document=document - 'deleted_at' - 'deleted_by'" in statement
|
||||
assert "deleted_at=NULL, deleted_by=NULL" in statement
|
||||
assert parameters == ("project-1", resource_ids)
|
||||
|
||||
with pytest.raises(ValueError, match="unsupported seeded resource"):
|
||||
restore_seeded_resources(
|
||||
store,
|
||||
"project-1",
|
||||
table="requests",
|
||||
id_column="request_id",
|
||||
resource_ids=resource_ids,
|
||||
)
|
||||
Reference in New Issue
Block a user