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
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
"""Shared fixtures for all tests."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import date
|
||||
|
||||
import pytest
|
||||
|
||||
from src.models import NormalizedEvent
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def sample_event() -> NormalizedEvent:
|
||||
return NormalizedEvent(
|
||||
name="Toronto Raptors vs Boston Celtics",
|
||||
event_date=date(2026, 5, 10),
|
||||
venue="Scotiabank Arena",
|
||||
source="ticketmaster",
|
||||
url="https://example.com/raptors",
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def sample_events() -> list[NormalizedEvent]:
|
||||
return [
|
||||
NormalizedEvent(
|
||||
name="Toronto Raptors vs Boston Celtics",
|
||||
event_date=date(2026, 5, 10),
|
||||
venue="Scotiabank Arena",
|
||||
source="ticketmaster",
|
||||
url="https://example.com/raptors",
|
||||
),
|
||||
NormalizedEvent(
|
||||
name="Blue Jays vs Yankees",
|
||||
event_date=date(2026, 5, 12),
|
||||
venue="Rogers Centre",
|
||||
source="seatgeek",
|
||||
url="https://example.com/jays",
|
||||
),
|
||||
NormalizedEvent(
|
||||
name="Drake Concert",
|
||||
event_date=date(2026, 5, 15),
|
||||
venue="Budweiser Stage",
|
||||
source="ticketmaster",
|
||||
url="https://example.com/drake",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
TICKETMASTER_RESPONSE = {
|
||||
"_embedded": {
|
||||
"events": [
|
||||
{
|
||||
"name": "Toronto Raptors vs Boston Celtics",
|
||||
"dates": {"start": {"localDate": "2026-05-10"}},
|
||||
"url": "https://www.ticketmaster.ca/raptors",
|
||||
"_embedded": {
|
||||
"venues": [{"name": "Scotiabank Arena"}]
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "Blue Jays vs Yankees",
|
||||
"dates": {"start": {"localDate": "2026-05-12"}},
|
||||
"url": "https://www.ticketmaster.ca/jays",
|
||||
"_embedded": {
|
||||
"venues": [{"name": "Rogers Centre"}]
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "Indie Band at Horseshoe",
|
||||
"dates": {"start": {"localDate": "2026-05-11"}},
|
||||
"url": "https://www.ticketmaster.ca/indie",
|
||||
"_embedded": {
|
||||
"venues": [{"name": "Horseshoe Tavern"}]
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
SEATGEEK_RESPONSE = {
|
||||
"events": [
|
||||
{
|
||||
"title": "Raptors vs Celtics",
|
||||
"datetime_local": "2026-05-10T19:30:00",
|
||||
"venue": {"name": "Scotiabank Arena"},
|
||||
"url": "https://seatgeek.com/raptors",
|
||||
"score": 0.85,
|
||||
},
|
||||
{
|
||||
"title": "Drake Concert",
|
||||
"datetime_local": "2026-05-15T20:00:00",
|
||||
"venue": {"name": "Budweiser Stage"},
|
||||
"url": "https://seatgeek.com/drake",
|
||||
"score": 0.72,
|
||||
},
|
||||
{
|
||||
"title": "Local Open Mic",
|
||||
"datetime_local": "2026-05-14T21:00:00",
|
||||
"venue": {"name": "The Rex"},
|
||||
"url": "https://seatgeek.com/openmic",
|
||||
"score": 0.1,
|
||||
},
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user