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"]