"""Smoke tests for runtime settings."""

from config.settings import Settings, get_settings


def test_default_settings() -> None:
    """Verify that Settings loads with correct default values."""
    settings = Settings()
    assert settings.project_name == "AI MusiMuse"
    assert settings.database_url.startswith("sqlite")
    assert settings.log_level in ("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL")


def test_settings_from_env(monkeypatch: object) -> None:
    """Verify that Settings loads values from environment variables."""
    import os

    os.environ["PROJECT_NAME"] = "Test Project"
    os.environ["LOG_LEVEL"] = "DEBUG"

    get_settings.cache_clear()
    settings = get_settings()
    assert settings.project_name == "Test Project"
    assert settings.log_level == "DEBUG"

    del os.environ["PROJECT_NAME"]
    del os.environ["LOG_LEVEL"]
    get_settings.cache_clear()


def test_get_settings_returns_cached_instance() -> None:
    """Verify that get_settings returns the same instance on repeated calls."""
    get_settings.cache_clear()
    first = get_settings()
    second = get_settings()
    assert first is second
    get_settings.cache_clear()
