Spaces:
Sleeping
Sleeping
| """Autonomous idempotency (server/dedup.py).""" | |
| import pytest | |
| from server import dedup | |
| from server.schema import Event | |
| 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"] | |