48 lines
1.9 KiB
Python
48 lines
1.9 KiB
Python
"""Settings parsing: CSV env values, aliases, defaults."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import date
|
|
|
|
from us2kr.config import Settings
|
|
|
|
|
|
def test_csv_env_values_are_split(monkeypatch):
|
|
monkeypatch.setenv("MINIMAX_FALLBACK_MODELS", "MiniMax-M2.7, MiniMax-M2.5")
|
|
monkeypatch.setenv("US2KR_KRX_EXTRA_HOLIDAYS", "2026-06-03,2026-12-31")
|
|
s = Settings(_env_file=None)
|
|
assert s.minimax_fallback_models == ["MiniMax-M2.7", "MiniMax-M2.5"]
|
|
assert s.krx_extra_holidays == [date(2026, 6, 3), date(2026, 12, 31)]
|
|
|
|
|
|
def test_empty_csv_gives_empty_list(monkeypatch):
|
|
monkeypatch.setenv("US2KR_KRX_EXTRA_HOLIDAYS", "")
|
|
monkeypatch.setenv("MINIMAX_FALLBACK_MODELS", "")
|
|
s = Settings(_env_file=None)
|
|
assert s.krx_extra_holidays == []
|
|
assert s.minimax_fallback_models == []
|
|
|
|
|
|
def test_defaults_without_env(monkeypatch):
|
|
for k in ("MINIMAX_FALLBACK_MODELS", "US2KR_KRX_EXTRA_HOLIDAYS", "TELEGRAM_BOT_TOKEN", "TELEGRAM_CHAT_ID"):
|
|
monkeypatch.delenv(k, raising=False)
|
|
s = Settings(_env_file=None)
|
|
assert s.minimax_model == "MiniMax-M3"
|
|
assert s.minimax_fallback_models == ["MiniMax-M2.7", "MiniMax-M2.5"]
|
|
assert s.krx_extra_holidays == []
|
|
assert s.telegram_enabled is False
|
|
|
|
|
|
def test_init_kwargs_accept_field_name_and_alias(monkeypatch):
|
|
monkeypatch.delenv("US2KR_RUN_OFFSET_MINUTES", raising=False)
|
|
assert Settings(_env_file=None, run_offset_minutes=30).run_offset_minutes == 30
|
|
assert Settings(_env_file=None, US2KR_RUN_OFFSET_MINUTES=45).run_offset_minutes == 45
|
|
|
|
|
|
def test_telegram_enabled_requires_both(monkeypatch):
|
|
monkeypatch.setenv("TELEGRAM_BOT_TOKEN", "123456:abcdefghijklmnopqrstuvwxyz")
|
|
monkeypatch.delenv("TELEGRAM_CHAT_ID", raising=False)
|
|
assert Settings(_env_file=None).telegram_enabled is False
|
|
monkeypatch.setenv("TELEGRAM_CHAT_ID", "42")
|
|
assert Settings(_env_file=None).telegram_enabled is True
|