OffGridSchedula / tests /test_dedup.py
ParetoOptimal's picture
Initial Commit
0366d65
Raw
History Blame Contribute Delete
1.21 kB
"""Autonomous idempotency (server/dedup.py)."""
import pytest
from server import dedup
from server.schema import Event
@pytest.fixture(autouse=True)
def _clean():
dedup.reset()
yield
dedup.reset()
def _ev(title="Dinner", start="2026-06-06T18:00:00"):
return Event(title=title, start=start)
def test_filter_new_drops_repeats_across_calls():
first = dedup.filter_new([_ev()])
assert len(first) == 1
second = dedup.filter_new([_ev()])
assert second == [] # same event, already seen
def test_filter_new_keeps_distinct():
dedup.filter_new([_ev()])
out = dedup.filter_new([_ev(title="Lunch", start="2026-06-07T12:00:00")])
assert len(out) == 1
def test_event_key_normalizes_title_and_minute():
a = dedup.event_key(_ev(title=" Dinner ", start="2026-06-06T18:00:00"))
b = dedup.event_key(_ev(title="dinner", start="2026-06-06T18:00:30"))
assert a == b # case/space-insensitive, start rounded to the minute
def test_mixed_batch_returns_only_new():
dedup.filter_new([_ev()])
out = dedup.filter_new([_ev(), _ev(title="New", start="2026-06-08T09:00:00")])
assert [e.title for e in out] == ["New"]