diff --git a/tests/test_core/test_config.py b/tests/test_core/test_config.py new file mode 100644 index 0000000..79388d7 --- /dev/null +++ b/tests/test_core/test_config.py @@ -0,0 +1,58 @@ +"""Tests for configuration module.""" + +from pathlib import Path + +import pytest + +from veritext.core.config import VeritextSettings, get_settings + + +class TestVeritextSettings: + def test_default_log_level(self) -> None: + settings = VeritextSettings() + assert settings.log_level == "INFO" + + def test_default_log_format(self) -> None: + settings = VeritextSettings() + assert settings.log_format == "console" + + def test_default_benchmark_path(self) -> None: + settings = VeritextSettings() + assert settings.benchmark_storage_path == Path("benchmarks") + + def test_default_tokeniser_lowercase(self) -> None: + settings = VeritextSettings() + assert settings.tokeniser_lowercase is True + + def test_default_remove_punctuation(self) -> None: + settings = VeritextSettings() + assert settings.tokeniser_remove_punctuation is True + + def test_default_semantic_model(self) -> None: + settings = VeritextSettings() + assert settings.semantic_model == "all-MiniLM-L6-v2" + + def test_default_semantic_cache_enabled(self) -> None: + settings = VeritextSettings() + assert settings.semantic_cache_embeddings is True + + def test_env_var_override(self, monkeypatch: pytest.MonkeyPatch) -> None: + 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: + monkeypatch.setenv("VERITEXT_LOG_FORMAT", "json") + settings = VeritextSettings() + assert settings.log_format == "json" + + +class TestGetSettings: + def test_get_settings_returns_instance(self) -> None: + settings = get_settings() + assert isinstance(settings, VeritextSettings) + + def test_get_settings_returns_valid_defaults(self) -> None: + settings = get_settings() + assert settings.log_level in ("DEBUG", "INFO", "WARNING", "ERROR") + assert settings.log_format in ("console", "json") diff --git a/tests/test_core/test_logging.py b/tests/test_core/test_logging.py new file mode 100644 index 0000000..e5bd1c0 --- /dev/null +++ b/tests/test_core/test_logging.py @@ -0,0 +1,45 @@ +"""Tests for logging module.""" + +from veritext.core.logging import configure_logging, get_logger + + +class TestGetLogger: + def test_get_logger_returns_logger(self) -> None: + logger = get_logger() + assert logger is not None + + def test_get_logger_default_name(self) -> None: + logger = get_logger() + # The logger should be a bound logger from structlog + assert hasattr(logger, "info") + assert hasattr(logger, "debug") + assert hasattr(logger, "warning") + assert hasattr(logger, "error") + + def test_get_logger_custom_name(self) -> None: + logger = get_logger("custom.module") + assert logger is not None + assert hasattr(logger, "info") + + +class TestConfigureLogging: + def test_configure_logging_console_format(self) -> None: + configure_logging(level="INFO", log_format="console") + logger = get_logger() + assert logger is not None + + def test_configure_logging_json_format(self) -> None: + configure_logging(level="DEBUG", log_format="json") + logger = get_logger() + assert logger is not None + + def test_configure_logging_uses_defaults(self) -> None: + configure_logging() + logger = get_logger() + assert logger is not None + + def test_configure_logging_different_levels(self) -> None: + for level in ("DEBUG", "INFO", "WARNING", "ERROR"): + configure_logging(level=level) + logger = get_logger() + assert logger is not None