generated from coulomb/repo-seed
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>
74 lines
2.2 KiB
Python
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
|