Files
hot_comment_radar/tests/unit/test_config.py
T

77 lines
2.6 KiB
Python

from app.config import Settings
def test_settings_use_t01_defaults(monkeypatch):
monkeypatch.delenv("APP_ENV", raising=False)
monkeypatch.delenv("DATABASE_URL", raising=False)
monkeypatch.delenv("TIKHUB_BASE_URL", raising=False)
monkeypatch.delenv("AI_PROVIDER", raising=False)
settings = Settings(_env_file=None)
assert settings.app_env == "development"
assert settings.database_url == "sqlite:///data/app.db"
assert settings.tikhub_base_url == "https://api.tikhub.io"
assert settings.ai_provider == "openai-compatible"
def test_settings_read_environment_overrides(monkeypatch):
monkeypatch.setenv("APP_ENV", "test")
monkeypatch.setenv("DATABASE_URL", "sqlite:///:memory:")
monkeypatch.setenv("TIKHUB_API_KEY", "test-token")
monkeypatch.setenv("AI_API_KEY", "test-ai-key")
settings = Settings(_env_file=None)
assert settings.app_env == "test"
assert settings.database_url == "sqlite:///:memory:"
assert settings.tikhub_api_key == "test-token"
assert settings.ai_api_key == "test-ai-key"
def test_settings_include_t02_defaults(monkeypatch):
monkeypatch.delenv("AI_BATCH_SIZE", raising=False)
monkeypatch.delenv("AI_CONCURRENCY", raising=False)
monkeypatch.delenv("AI_MAX_RETRIES", raising=False)
monkeypatch.delenv("AI_TIMEOUT_SECONDS", raising=False)
monkeypatch.delenv("HTTP_TIMEOUT_SECONDS", raising=False)
monkeypatch.delenv("HTTP_MAX_RETRIES", raising=False)
monkeypatch.delenv("CRAWL_PAGE_INTERVAL_SECONDS", raising=False)
settings = Settings(_env_file=None)
assert settings.ai_batch_size == 20
assert settings.ai_concurrency == 2
assert settings.ai_max_retries == 3
assert settings.ai_timeout_seconds == 30
assert settings.http_timeout_seconds == 20
assert settings.http_max_retries == 3
assert settings.crawl_page_interval_seconds == 1.5
def test_settings_read_crawl_page_interval_from_environment(monkeypatch):
monkeypatch.setenv("CRAWL_PAGE_INTERVAL_SECONDS", "0.25")
settings = Settings(_env_file=None)
assert settings.crawl_page_interval_seconds == 0.25
def test_ai_concurrency_has_hard_upper_bound(monkeypatch):
monkeypatch.setenv("AI_CONCURRENCY", "4")
settings = Settings(_env_file=None)
assert settings.ai_concurrency == 3
def test_task_limit_ranges_are_available_on_settings():
settings = Settings(_env_file=None)
assert settings.hot_limit_min == 1
assert settings.hot_limit_max == 10
assert settings.item_limit_per_hot_min == 1
assert settings.item_limit_per_hot_max == 10
assert settings.comment_limit_per_item_min == 10
assert settings.comment_limit_per_item_max == 100