import os import sys # Ensure tests can import the src package layout when running from repo root ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) SRC = os.path.join(ROOT, "src") sys.path.insert(0, SRC) from idea168_crisispulse_federated_resource.core.ledger import LocalLedger def test_ledger_add_and_snapshot_and_merkle(): ledger = LocalLedger() ledger.add_entry("camp1", {"resources": {"energy": 100}}) ledger.add_entry("camp2", {"resources": {"water": 200}}) snap = ledger.snapshot() assert "camp1" in snap and "camp2" in snap root = ledger.merkle_root() assert isinstance(root, str) and len(root) == 64 def test_ledger_apply_delta(): ledger = LocalLedger() ledger.add_entry("camp1", {"resources": {"energy": 50}}) delta = { "entry_id": "camp1", "changes": {"resources": {"energy": 75}}, "tags": ["test"], "signature": "signature-placeholder", } ledger.apply_delta(delta) entry = ledger.get_entry("camp1") assert entry is not None assert entry["data"]["resources"]["energy"] == 75