You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.5 KiB
Python
89 lines
2.5 KiB
Python
"""Unit tests for config module."""
|
|
import pytest
|
|
|
|
|
|
def test_settings_defaults(monkeypatch):
|
|
"""Settings load with expected defaults."""
|
|
monkeypatch.delenv("POSTGRES_DSN", raising=False)
|
|
monkeypatch.delenv("STOCK_ORACLE_URL", raising=False)
|
|
|
|
# Reset lru_cache
|
|
from libs.common import config
|
|
config.get_settings.cache_clear()
|
|
|
|
settings = config.Settings(
|
|
postgres_dsn="postgresql+asyncpg://acef:acef@localhost:5432/acef",
|
|
stock_oracle_url="http://localhost:18001",
|
|
)
|
|
assert settings.stock_oracle_url == "http://localhost:18001"
|
|
assert settings.log_level == "INFO"
|
|
assert settings.llm_enabled is False
|
|
config.get_settings.cache_clear()
|
|
|
|
|
|
def test_log_level_normalized():
|
|
from libs.common.config import Settings
|
|
s = Settings(log_level="debug")
|
|
assert s.log_level == "DEBUG"
|
|
|
|
|
|
def test_exhibit_cache_dir():
|
|
from libs.common.config import Settings
|
|
s = Settings(data_root="/tmp/acef")
|
|
assert str(s.exhibit_cache_dir) == "/tmp/acef/cache/exhibits"
|
|
|
|
|
|
def test_parquet_dir():
|
|
from libs.common.config import Settings
|
|
s = Settings(data_root="/tmp/acef")
|
|
assert str(s.parquet_dir) == "/tmp/acef/parquet"
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_get_symbols(tmp_path):
|
|
"""get_symbols returns list from YAML."""
|
|
import yaml
|
|
|
|
from libs.common.config import Settings
|
|
|
|
symbols_file = tmp_path / "symbols.yaml"
|
|
symbols_file.write_text(yaml.dump({"symbols": ["AAPL", "MSFT"]}))
|
|
|
|
import os
|
|
old = os.getcwd()
|
|
os.chdir(tmp_path)
|
|
(tmp_path / "configs").mkdir(exist_ok=True)
|
|
(tmp_path / "configs" / "symbols.yaml").write_text(
|
|
yaml.dump({"symbols": ["AAPL", "MSFT"]})
|
|
)
|
|
s = Settings()
|
|
syms = s.get_symbols()
|
|
os.chdir(old)
|
|
# May return [] if configs/symbols.yaml not in cwd — just check type
|
|
assert isinstance(syms, list)
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_symbols_file_configurable(tmp_path):
|
|
"""symbols_file field can point to a custom YAML file."""
|
|
import yaml
|
|
|
|
from libs.common.config import Settings
|
|
|
|
custom = tmp_path / "custom_symbols.yaml"
|
|
custom.write_text(yaml.dump({"symbols": ["CIEN", "CALX", "TENB"]}))
|
|
|
|
s = Settings(symbols_file=str(custom))
|
|
assert s.symbols_file == str(custom)
|
|
syms = s.get_symbols()
|
|
assert syms == ["CIEN", "CALX", "TENB"]
|
|
|
|
|
|
@pytest.mark.unit
|
|
def test_symbols_file_default():
|
|
"""Default symbols_file is configs/symbols.yaml."""
|
|
from libs.common.config import Settings
|
|
|
|
s = Settings()
|
|
assert s.symbols_file == "configs/symbols.yaml"
|