"""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)