idea143-crisisguard-federat.../tests/test_delta_sync.py

25 lines
1015 B
Python

import json
from crisisguard.core import LocalPlan, PlanDelta, GovernanceLog
def test_apply_delta_to_plan():
base = LocalPlan(plan_id="LP1", neighborhood="N1", contents={"shelter": {"capacity": 5}, "medical": {"stock": 20}})
delta = PlanDelta(delta_id="D1", base_plan_id=base.plan_id, updates={"shelter": {"capacity": 7}} , author="tester")
# Apply delta by constructing a new LocalPlan in lieu of a full delta-applier
updated = LocalPlan(
plan_id=base.plan_id,
neighborhood=base.neighborhood,
contents={**base.contents, "shelter": {"capacity": 7}},
version=base.version + 1,
timestamp=base.timestamp,
)
assert updated.contents["shelter"]["capacity"] == 7
def test_governance_log_chain():
log = GovernanceLog()
e1 = log.append("create", {"plan_id": "LP1"}, "node-1")
e2 = log.append("update", {"delta": "D1"}, "node-2")
assert e1["hash"] != e2["hash"]
assert e1["prev_hash"] == "0" * 64
assert e2["prev_hash"] == e1["hash"]