AtAnyRate/tests/test_config.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.4 KiB
Python

"""Tests for the configuration module."""
import os
from unittest.mock import patch
from src.config import Settings, load_settings
class TestSettings:
def test_defaults(self):
with patch.dict(os.environ, {}, clear=True):
settings = Settings(
_env_file=None, # type: ignore[call-arg]
)
assert settings.ticketmaster_key == ""
assert settings.seatgeek_client_id == ""
assert settings.telegram_bot_token == ""
assert settings.telegram_chat_id == ""
assert settings.airbnb_listing_id == ""
assert settings.airbnb_base_price == 150
assert settings.price_increase_pct == 20
assert settings.search_lat == 43.8083
assert settings.search_lon == -79.4220
assert settings.search_radius_km == 30
assert settings.min_alert_score == 0.0
assert settings.lookahead_days == 30
assert settings.log_level == "INFO"
def test_loads_from_env(self):
env = {
"TICKETMASTER_KEY": "tm-key-123",
"SEATGEEK_CLIENT_ID": "sg-id-456",
"TELEGRAM_BOT_TOKEN": "bot-token",
"TELEGRAM_CHAT_ID": "12345",
"AIRBNB_LISTING_ID": "listing-789",
"AIRBNB_BASE_PRICE": "200",
"PRICE_INCREASE_PCT": "30",
"SEARCH_LAT": "44.0",
"SEARCH_LON": "-80.0",
"SEARCH_RADIUS_KM": "50",
"MIN_ALERT_SCORE": "0.45",
"LOOKAHEAD_DAYS": "14",
"LOG_LEVEL": "DEBUG",
}
with patch.dict(os.environ, env, clear=True):
settings = Settings(_env_file=None) # type: ignore[call-arg]
assert settings.ticketmaster_key == "tm-key-123"
assert settings.seatgeek_client_id == "sg-id-456"
assert settings.telegram_bot_token == "bot-token"
assert settings.telegram_chat_id == "12345"
assert settings.airbnb_listing_id == "listing-789"
assert settings.airbnb_base_price == 200
assert settings.price_increase_pct == 30
assert settings.search_lat == 44.0
assert settings.search_lon == -80.0
assert settings.search_radius_km == 50
assert settings.min_alert_score == 0.45
assert settings.lookahead_days == 14
assert settings.log_level == "DEBUG"
def test_load_settings_returns_settings_instance(self):
settings = load_settings()
assert isinstance(settings, Settings)