Files
hunjing/backend/tests/ai_provider/test_manager.py
T
2026-08-21 16:00:13 +08:00

62 lines
1.9 KiB
Python

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)