77 lines
2.6 KiB
Python
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
|