"""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, }, ] }