Files
Labvoice/tests/test_config.py
T
2026-08-30 20:44:00 +02:00

51 lines
1.8 KiB
Python

"""config.py — env-driven settings (plan §11)."""
from pathlib import Path
from mcp_server.config import Settings, get_settings
def test_defaults():
settings = Settings(_env_file=None)
assert settings.elabftw_timeout == 10.0
assert settings.elabftw_retries == 2
assert settings.labvoice_db_path == Path("~/.labvoice/journal.sqlite")
assert settings.labvoice_template_desc_limit == 200
assert settings.labvoice_rest_token is None
assert settings.labvoice_embed_model is None
def test_default_unit_whitelist_matches_plan():
settings = Settings(_env_file=None)
assert "μL" in settings.unit_whitelist
assert "mL" in settings.unit_whitelist
assert "ea" in settings.unit_whitelist
def test_unit_whitelist_parsing_ignores_blanks_and_spaces():
settings = Settings(_env_file=None, labvoice_unit_whitelist=" mL , L , , ea ")
assert settings.unit_whitelist == ("mL", "L", "ea")
def test_api_base_url_strips_trailing_slash():
settings = Settings(_env_file=None, elabftw_url="https://eln.example.org/")
assert settings.api_base_url == "https://eln.example.org/api/v2"
def test_env_overrides(monkeypatch):
monkeypatch.setenv("ELABFTW_URL", "https://eln2.example.org")
monkeypatch.setenv("ELABFTW_TIMEOUT", "3.5")
monkeypatch.setenv("LABVOICE_DB_PATH", "/tmp/other.sqlite")
settings = Settings(_env_file=None)
assert settings.elabftw_url == "https://eln2.example.org"
assert settings.elabftw_timeout == 3.5
assert settings.labvoice_db_path == Path("/tmp/other.sqlite")
def test_get_settings_is_cached(monkeypatch):
monkeypatch.setenv("ELABFTW_URL", "https://a.example.org")
first = get_settings()
monkeypatch.setenv("ELABFTW_URL", "https://b.example.org")
assert get_settings() is first
get_settings.cache_clear()