25 lines
1015 B
Python
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"]
|