# tests/unit/test_config.py
import os
import pytest

# Ensure src is in path
import sys
sys.path.insert(0, '/home/jang/Projects/ai-researcher')

from src.config import Settings


def test_settings_defaults():
    """测试配置默认值"""
    settings = Settings()

    assert settings.APP_NAME == "AI研究员"
    assert settings.APP_VERSION == "0.1.0"
    assert settings.QUERY_ROUTER_COMPLEXITY_THRESHOLD == 0.3
    assert settings.QUERY_ROUTER_MAX_SYNC_DURATION_MS == 2000
    assert settings.QUERY_ROUTER_WEIGHTS["data_sources"] == 0.25


def test_settings_from_env():
    """测试配置从环境变量加载"""
    # Save original values
    original_db = os.environ.get("DATABASE_URL")
    original_redis = os.environ.get("REDIS_URL")
    original_key = os.environ.get("OPENAI_API_KEY")

    try:
        os.environ["DATABASE_URL"] = "postgresql://test:test@localhost/test"
        os.environ["REDIS_URL"] = "redis://localhost:6379"
        os.environ["OPENAI_API_KEY"] = "sk-test123"

        # Clear lru_cache
        from src.config import get_settings
        get_settings.cache_clear()

        settings = Settings()

        assert settings.DATABASE_URL == "postgresql://test:test@localhost/test"
        assert settings.REDIS_URL == "redis://localhost:6379"
        assert settings.OPENAI_API_KEY == "sk-test123"
    finally:
        # Restore original values
        if original_db:
            os.environ["DATABASE_URL"] = original_db
        elif "DATABASE_URL" in os.environ:
            del os.environ["DATABASE_URL"]

        if original_redis:
            os.environ["REDIS_URL"] = original_redis

        if original_key:
            os.environ["OPENAI_API_KEY"] = original_key
        elif "OPENAI_API_KEY" in os.environ:
            del os.environ["OPENAI_API_KEY"]
