Complete reversible 1C saved-state prepare workflow
This commit is contained in:
@@ -291,6 +291,25 @@ def test_object_property_plan_writes_existing_member_by_name(monkeypatch) -> Non
|
||||
|
||||
def test_object_property_apply_verify_and_rollback(monkeypatch) -> None:
|
||||
install_common_mocks(monkeypatch)
|
||||
monkeypatch.setattr(
|
||||
adapter,
|
||||
"metadata_saved_state_prepare",
|
||||
lambda _payload: {
|
||||
"status": "verified",
|
||||
"applied": True,
|
||||
"object": {
|
||||
"kind": "Catalog",
|
||||
"name": "Номенклатура",
|
||||
"guid": OBJECT_GUID,
|
||||
},
|
||||
"file_names": ["object.0"],
|
||||
"apply_result": {
|
||||
"prepare_receipt": {
|
||||
"receipt_id": "a" * 32,
|
||||
}
|
||||
},
|
||||
},
|
||||
)
|
||||
reads = iter([(b"old", {"database": "db"}, None), (b"new", {"database": "db"}, None)])
|
||||
monkeypatch.setattr(adapter, "read_storage_file_bytes", lambda *_args, **_kwargs: next(reads))
|
||||
monkeypatch.setattr(
|
||||
@@ -320,6 +339,19 @@ def test_object_property_apply_verify_and_rollback(monkeypatch) -> None:
|
||||
"storage_saved_state_rollback",
|
||||
lambda payload: {"status": "applied", "applied": True, "backup_id": payload["backup_id"]},
|
||||
)
|
||||
prepare_rollback: dict[str, Any] = {}
|
||||
|
||||
def fake_prepare_rollback(base_id: str, receipt_id: str, *, timeout_seconds: int) -> dict[str, Any]:
|
||||
prepare_rollback.update(
|
||||
{
|
||||
"base_id": base_id,
|
||||
"receipt_id": receipt_id,
|
||||
"timeout_seconds": timeout_seconds,
|
||||
}
|
||||
)
|
||||
return {"status": "rolled_back", "applied": True}
|
||||
|
||||
monkeypatch.setattr(adapter, "rollback_saved_state_prepare_receipt", fake_prepare_rollback)
|
||||
|
||||
result = adapter.metadata_object_property_write(
|
||||
base_payload(
|
||||
@@ -332,6 +364,8 @@ def test_object_property_apply_verify_and_rollback(monkeypatch) -> None:
|
||||
assert result["status"] == "verified_and_rolled_back"
|
||||
assert result["applied"] is True
|
||||
assert result["rolled_back"] is True
|
||||
assert result["prepare_rollback_result"]["status"] == "rolled_back"
|
||||
assert prepare_rollback["receipt_id"] == "a" * 32
|
||||
assert result["semantic_verification"] == {
|
||||
"status": "ok",
|
||||
"expected": "Номенклатура товаров",
|
||||
|
||||
Reference in New Issue
Block a user