Spaces:
Running
Running
| """ | |
| Tests for Task 7: Model Selection Centralization | |
| """ | |
| import sys | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from src.llm_config import LLMConfig | |
| def test_get_synthesizer_returns_not_none(): | |
| """get_synthesizer should return a model (may need API key — skip if unavailable)""" | |
| config = LLMConfig(lazy=True) | |
| try: | |
| model = config.get_synthesizer() | |
| assert model is not None | |
| except (ValueError, ImportError): | |
| # API keys may not be configured in CI | |
| import pytest | |
| pytest.skip("LLM provider not configured, skipping") | |
| def test_get_synthesizer_with_model_name(): | |
| """get_synthesizer with custom model should not raise (validates dispatch)""" | |
| config = LLMConfig(lazy=True) | |
| try: | |
| model = config.get_synthesizer(model_name="llama-3.3-70b-versatile") | |
| assert model is not None | |
| except (ValueError, ImportError): | |
| import pytest | |
| pytest.skip("LLM provider not configured, skipping") | |
| def test_llm_config_has_synthesizer_property(): | |
| """LLMConfig should expose synthesizer_8b via property""" | |
| assert hasattr(LLMConfig, "synthesizer_8b") | |
| def test_llm_config_has_all_properties(): | |
| """Verify all expected model properties exist""" | |
| expected = ["planner", "analyzer", "explainer", "synthesizer_7b", "synthesizer_8b", "director", "embedding_model"] | |
| for prop_name in expected: | |
| assert hasattr(LLMConfig, prop_name), f"Missing property: {prop_name}" | |