nebulaforge-offline-resilie.../tests/test_contracts.py

22 lines
827 B
Python

from nebulaforge.contracts import LocalProblem, SharedVariables, PlanDelta, AuditLog
import json
def test_contract_dataclasses():
lp = LocalProblem(id="lp1", domain="rover", description="test", version=1)
sv = SharedVariables(variables={"a": 1}, version=1)
pd = PlanDelta(delta={"x": 1}, timestamp=123.456, version=1)
al = AuditLog(entry="update", signer="tester", timestamp=123.456, contract_id="lp1", version=1)
assert isinstance(lp, LocalProblem)
assert lp.id == "lp1"
assert isinstance(sv.variables, dict)
assert isinstance(pd.delta, dict)
assert isinstance(al.entry, str)
# JSON serialization sanity check
from nebulaforge.contracts import to_json
json_str = to_json(lp)
assert isinstance(json_str, str)
data = json.loads(json_str)
assert data["id"] == "lp1"