import pytest from app.ai_provider.config.models import ModelConfig, ProviderConfig from app.ai_provider.core.registry import ModelRegistry, ProviderRegistry from app.ai_provider.manager import ProviderManager from app.ai_provider.types.messages import HumanMessage, SystemMessage class TestProviderManager: @pytest.fixture def manager(self): models = [ ModelConfig( name="test", provider="deepseek", model="deepseek-v4-flash", format="openai", tags=["default"], ), ] providers = { "deepseek": ProviderConfig( name="deepseek", format="openai", base_url_env="DEEPSEEK_BASE_URL", api_key_env="DEEPSEEK_API_KEY", ), } model_reg = ModelRegistry(models) provider_reg = ProviderRegistry(providers) return ProviderManager( model_registry=model_reg, provider_registry=provider_reg, ) def test_resolve_model(self, manager): name = manager.resolve_model("test") assert name == "test" def test_resolve_model_default(self, manager): name = manager.resolve_model() assert name == "test" def test_get_adapter_for_model(self, manager): adapter = manager.get_adapter("test") from app.ai_provider.llm.openai_format import OpenAIFormatAdapter assert isinstance(adapter, OpenAIFormatAdapter) def test_get_provider_config(self, manager): prov = manager.get_provider_config("deepseek") assert prov.name == "deepseek" def test_to_message_list(self, manager): msgs = manager.to_message_list( system_messages=["You are helpful."], history=[("user", "Hello")], ) assert len(msgs) == 2 assert isinstance(msgs[0], SystemMessage) assert isinstance(msgs[1], HumanMessage)