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
65 lines
2.0 KiB
Python
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
|