"""Tests for configuration module.""" from pathlib import Path import pytest from veritext.core.config import VeritextSettings, get_settings class TestVeritextSettings: """Tests for VeritextSettings.""" def test_default_log_level(self) -> None: """Test default log level is INFO.""" settings = VeritextSettings() assert settings.log_level == "INFO" def test_default_log_format(self) -> None: """Test default log format is console.""" settings = VeritextSettings() assert settings.log_format == "console" def test_default_benchmark_path(self) -> None: """Test default benchmark storage path.""" settings = VeritextSettings() assert settings.benchmark_storage_path == Path("benchmarks") def test_default_tokeniser_lowercase(self) -> None: """Test default tokeniser lowercase setting.""" settings = VeritextSettings() assert settings.tokeniser_lowercase is True def test_default_tokeniser_remove_punctuation(self) -> None: """Test default tokeniser remove punctuation setting.""" settings = VeritextSettings() assert settings.tokeniser_remove_punctuation is True def test_default_semantic_model(self) -> None: """Test default semantic model name.""" settings = VeritextSettings() assert settings.semantic_model == "all-MiniLM-L6-v2" def test_default_semantic_cache_enabled(self) -> None: """Test semantic cache is enabled by default.""" settings = VeritextSettings() assert settings.semantic_cache_embeddings is True def test_env_var_override(self, monkeypatch: pytest.MonkeyPatch) -> None: """Test environment variable overrides default settings.""" monkeypatch.setenv("VERITEXT_LOG_LEVEL", "DEBUG") settings = VeritextSettings() assert settings.log_level == "DEBUG" def test_env_var_override_log_format(self, monkeypatch: pytest.MonkeyPatch) -> None: """Test environment variable overrides log format.""" monkeypatch.setenv("VERITEXT_LOG_FORMAT", "json") settings = VeritextSettings() assert settings.log_format == "json" class TestGetSettings: """Tests for get_settings function.""" def test_get_settings_returns_instance(self) -> None: """Test get_settings returns a VeritextSettings instance.""" settings = get_settings() assert isinstance(settings, VeritextSettings) def test_get_settings_returns_valid_defaults(self) -> None: """Test get_settings returns instance with valid defaults.""" settings = get_settings() assert settings.log_level in ("DEBUG", "INFO", "WARNING", "ERROR") assert settings.log_format in ("console", "json")