import json from opengrowth_privacy_preserving_federated_ import contracts as c def test_local_experiment_to_dict(): le = c.LocalExperiment( name="TestExperiment", variables={"price": 9.99, "discount": 0.1}, privacy_budget={"epsilon": 1.0}, metadata={"owner": "alice"}, ) d = le.to_dict() assert d["name"] == "TestExperiment" assert d["variables"]["price"] == 9.99 assert d["privacy_budget"]["epsilon"] == 1.0 assert d["metadata"]["owner"] == "alice" def test_shared_signals_to_dict(): ss = c.SharedSignals( signals={"activation_rate": 0.42, "funnel_drop": 0.15}, provenance={"source": "mock"}, ) d = ss.to_dict() assert d["signals"]["activation_rate"] == 0.42 assert d["provenance"]["source"] == "mock" def test_plan_delta_to_dict(): pd = c.PlanDelta(delta={"activation": 1}, timestamp="2020-01-01T00:00:00Z", note="init") d = pd.to_dict() assert d["delta"]["activation"] == 1 assert d["timestamp"] == "2020-01-01T00:00:00Z" assert d["note"] == "init" def test_graph_of_contracts_registry_ops(): g = c.GraphOfContracts() # register a contract g.register_contract("example", {"hello": "world"}, version="1.0") # get contract reg = g.get_contract("example") assert reg is not None assert reg["version"] == "1.0" assert reg["contract"]["hello"] == "world" # list contracts all_contracts = g.list_contracts() assert "example" in all_contracts # unregister and ensure removal removed = g.unregister_contract("example") assert removed is True all_contracts = g.list_contracts() assert "example" not in all_contracts