Files
shard-wiki/tests/test_provenance.py
tegwick aca9bf30f9 feat(provenance): layered ProvenanceEnvelope + effective() leaf (WP-0007 T1)
Dependency-free leaf rail: ProvenanceEnvelope + SpanProvenanceDelta + effective()
(page envelope ⊕ span delta; zero-cost inheritance when uniform). Liveness/
Staleness/OverlayState enums. 6 tests green. (blueprint §7.3, §11)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 08:55:35 +02:00

74 lines
2.2 KiB
Python

"""Tests for the provenance leaf rail (SHARD-WP-0007 T1)."""
from datetime import datetime, timezone
from shard_wiki.provenance import (
Liveness,
OverlayState,
ProvenanceEnvelope,
SpanProvenanceDelta,
Staleness,
effective,
)
def _base() -> ProvenanceEnvelope:
return ProvenanceEnvelope(
source_shard="shardA",
liveness=Liveness.STATIC,
staleness=Staleness.FRESH,
source_rev="r1",
observed_at=datetime(2026, 6, 15, tzinfo=timezone.utc),
)
def test_no_delta_returns_base_identity():
base = _base()
assert effective(base) is base
assert effective(base, SpanProvenanceDelta()) is base
def test_empty_delta_is_detected():
assert SpanProvenanceDelta().is_empty()
assert not SpanProvenanceDelta(source_shard="other").is_empty()
def test_single_field_override():
base = _base()
eff = effective(base, SpanProvenanceDelta(source_shard="shardB"))
assert eff.source_shard == "shardB"
# Untouched fields inherit from the page envelope.
assert eff.source_rev == "r1"
assert eff.liveness is Liveness.STATIC
# Base is unchanged (frozen, pure composition).
assert base.source_shard == "shardA"
def test_partial_delta_overrides_several_fields():
base = _base()
eff = effective(
base,
SpanProvenanceDelta(
staleness=Staleness.STALE,
overlay_state=OverlayState.DRAFT,
divergence=("shardB:Home",),
),
)
assert eff.staleness is Staleness.STALE
assert eff.overlay_state is OverlayState.DRAFT
assert eff.divergence == ("shardB:Home",)
assert eff.source_shard == "shardA" # inherited
def test_divergence_empty_tuple_overrides_but_none_inherits():
base = ProvenanceEnvelope(source_shard="s", divergence=("x",))
# None → inherit the page's divergence.
assert effective(base, SpanProvenanceDelta(divergence=None)).divergence == ("x",)
# Explicit empty tuple → override (clear it).
assert effective(base, SpanProvenanceDelta(divergence=())).divergence == ()
def test_envelope_is_hashable_and_value_equal():
assert _base() == _base()
assert len({_base(), _base()}) == 1