36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""Smoke tests for codex.config.Settings."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from codex.config import Settings, get_settings
|
|
|
|
|
|
def test_settings_defaults() -> None:
|
|
"""Settings() is constructable without env vars; expected defaults are set."""
|
|
s = Settings()
|
|
assert s.database_url == "postgresql://researcher:change_me@localhost:5432/papers"
|
|
assert s.embedding_model == "BAAI/bge-m3"
|
|
assert s.embedding_dim == 1024
|
|
|
|
|
|
def test_settings_env_override(monkeypatch: object) -> None:
|
|
"""DATABASE_URL env var overrides the default database_url."""
|
|
import pytest
|
|
|
|
mp: pytest.MonkeyPatch = monkeypatch # type: ignore[assignment]
|
|
mp.setenv("DATABASE_URL", "postgresql://x:y@h:5432/db")
|
|
s = Settings()
|
|
assert s.database_url == "postgresql://x:y@h:5432/db"
|
|
|
|
|
|
def test_get_settings_is_singleton() -> None:
|
|
"""get_settings() returns the same object on repeated calls; new object after cache_clear."""
|
|
get_settings.cache_clear()
|
|
first = get_settings()
|
|
second = get_settings()
|
|
assert first is second
|
|
|
|
get_settings.cache_clear()
|
|
third = get_settings()
|
|
assert third is not first
|