import json from nova_plan.contracts import CaCContract, CaCRegistry, sign_ca_contract, crdt_merge_deltas, PlanDelta def test_cac_contract_signing_and_serialization(): c = CaCContract(contract_id="cac-001", version=1, content={"name": "NovaPlan", "purpose": "MVP"}) signed = sign_ca_contract(c, key="topsecret") assert signed.signature is not None s = signed.to_json() # Ensure JSON can be parsed back without error parsed = json.loads(s) assert parsed.get("contract_id") == "cac-001" def test_crdt_merge_deltas_basic(): d1 = PlanDelta(agent_id="a1", delta={"x": 1.0}, timestamp=1.0) d2 = PlanDelta(agent_id="a2", delta={"y": 2.0}, timestamp=2.0) merged = crdt_merge_deltas(d1, d2) assert isinstance(merged, PlanDelta) assert "x" in merged.delta and "y" in merged.delta assert merged.timestamp == 2.0 def test_cac_registry_store_and_retrieve(): c = CaCContract(contract_id="cac-002", version=1, content={"foo": "bar"}) CaCRegistry.register(c) retrieved = CaCRegistry.get("cac-002") assert retrieved is c