idea168-crisispulse-federat.../tests/test_ledger.py

34 lines
1.1 KiB
Python

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