"""Tests for the overlay model + draft (SHARD-WP-0008 T2).""" from shard_wiki.coordination import DecisionLog, EventType, OverlayEngine from shard_wiki.model import Identity from shard_wiki.provenance import OverlayState def test_draft_records_event_and_is_retrievable(): log = DecisionLog() eng = OverlayEngine("space", log) ov = eng.draft(Identity("shardA", "Home"), "new body", base_rev="r1") assert ov.state is OverlayState.DRAFT assert ov.body == "new body" # recorded in the log (coordination-canonical) events = log.events("space") assert len(events) == 1 and events[0].type is EventType.OVERLAY_CREATED # retrievable through the fold by its id got = eng.get(ov.overlay_id) assert got is not None assert got.target == Identity("shardA", "Home") assert got.base_rev == "r1" assert got.body == "new body" def test_open_overlays_lists_drafts(): log = DecisionLog() eng = OverlayEngine("space", log) eng.draft(Identity("s", "A"), "a", base_rev=None) eng.draft(Identity("s", "B"), "b", base_rev=None) assert {o.target.key for o in eng.open_overlays()} == {"A", "B"} def test_unknown_overlay_is_none(): assert OverlayEngine("space", DecisionLog()).get("nope") is None def test_overlay_payload_round_trips(): log = DecisionLog() eng = OverlayEngine("space", log) ov = eng.draft(Identity("shardA", "sub/Page"), "x", base_rev="r9") assert eng.get(ov.overlay_id) == ov # payload reconstructs an equal Overlay