AtAnyRate/tests/test_models.py
ilia c8a82e264c Add tests, geo search, noise filtering, sports scoring, and dedup improvements.
Tests cover providers, dedup, Telegram, scoring, main runner, and Airbnb stubs.
Ticketmaster and SeatGeek use configurable lat/lon/radius (Thornhill default).
Pipeline filters noise listings, merges same-day sports duplicates, optional
MIN_ALERT_SCORE, and Telegram severity summary.

Made-with: Cursor
2026-04-04 15:25:35 -04:00

65 lines
2.0 KiB
Python

"""Tests for the NormalizedEvent model."""
from datetime import date
from src.models import NormalizedEvent
class TestNormalizedEvent:
def test_create_event(self):
event = NormalizedEvent(
name="Test Event",
event_date=date(2026, 6, 1),
venue="Test Venue",
source="test",
)
assert event.name == "Test Event"
assert event.event_date == date(2026, 6, 1)
assert event.venue == "Test Venue"
assert event.source == "test"
assert event.url == ""
assert event.score == 0.0
assert event.raw == {}
def test_dedup_key_combines_date_and_lowered_venue(self):
event = NormalizedEvent(
name="Show",
event_date=date(2026, 6, 1),
venue="Scotiabank Arena",
source="ticketmaster",
)
assert event.dedup_key == "2026-06-01|scotiabank arena"
def test_dedup_key_strips_whitespace(self):
event = NormalizedEvent(
name="Show",
event_date=date(2026, 6, 1),
venue=" Scotiabank Arena ",
source="ticketmaster",
)
assert event.dedup_key == "2026-06-01|scotiabank arena"
def test_frozen_dataclass_prevents_mutation(self):
event = NormalizedEvent(
name="Show",
event_date=date(2026, 6, 1),
venue="Scotiabank Arena",
source="ticketmaster",
)
try:
event.name = "Changed" # type: ignore[misc]
assert False, "Should have raised FrozenInstanceError"
except AttributeError:
pass
def test_equality_ignores_raw(self):
e1 = NormalizedEvent(
name="Show", event_date=date(2026, 6, 1),
venue="Venue", source="a", raw={"x": 1},
)
e2 = NormalizedEvent(
name="Show", event_date=date(2026, 6, 1),
venue="Venue", source="a", raw={"y": 2},
)
assert e1 == e2