Files
ecm_sync_system/tests/unit/test_invariants_runtime.py
T
strepsiades 4a9c444b10 first commit
2026-03-09 16:31:42 +08:00

32 lines
1016 B
Python

from __future__ import annotations
from pathlib import Path
from sync_state_machine.engine import StateMachineConfig, StateMachineRuntime
CFG_PATH = Path(__file__).resolve().parents[2] / "sync_state_machine" / "config" / "node_state_machine.yaml"
def test_precondition_failed_requires_update_action() -> None:
cfg = StateMachineConfig.load(CFG_PATH)
runtime = StateMachineRuntime(cfg)
bad_snapshot = {
"binding_status": "NORMAL",
"action": "NONE",
"status": "PRECONDITION_FAILED",
"data_id_exist": False,
}
violations = runtime.check_invariants(bad_snapshot)
assert any(v.invariant_id == "INV-3_PRECOND_IMPLIES_UPDATE" for v in violations)
good_snapshot = {
"binding_status": "NORMAL",
"action": "UPDATE",
"status": "PRECONDITION_FAILED",
"data_id_exist": True,
}
violations2 = runtime.check_invariants(good_snapshot)
assert not any(v.invariant_id == "INV-3_PRECOND_IMPLIES_UPDATE" for v in violations2)