90 lines
3.1 KiB
Python
90 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# pylint: disable=redefined-outer-name,unused-argument,protected-access
|
|
"""Tests for the Xiaomi MiMo Token Plan built-in provider."""
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
import pineagents.providers.provider_manager as provider_manager_module
|
|
from pineagents.providers.openai_provider import OpenAIProvider
|
|
from pineagents.providers.provider_manager import (
|
|
PROVIDER_MIMO_TOKENPLAN,
|
|
MIMO_TOKENPLAN_MODELS,
|
|
ProviderManager,
|
|
)
|
|
|
|
|
|
def test_mimo_provider_is_openai_compatible() -> None:
|
|
"""MiMo Token Plan provider should be an OpenAIProvider instance."""
|
|
assert isinstance(PROVIDER_MIMO_TOKENPLAN, OpenAIProvider)
|
|
|
|
|
|
def test_mimo_provider_config() -> None:
|
|
"""Verify MiMo Token Plan provider configuration defaults."""
|
|
assert PROVIDER_MIMO_TOKENPLAN.id == "mimo-tokenplan"
|
|
assert PROVIDER_MIMO_TOKENPLAN.name == "Xiaomi MiMo Token Plan"
|
|
assert (
|
|
PROVIDER_MIMO_TOKENPLAN.base_url
|
|
== "https://token-plan-cn.xiaomimimo.com/v1"
|
|
)
|
|
assert PROVIDER_MIMO_TOKENPLAN.freeze_url is True
|
|
assert PROVIDER_MIMO_TOKENPLAN.api_key_prefix == ""
|
|
|
|
|
|
def test_mimo_models_list() -> None:
|
|
"""Verify MiMo Token Plan model definitions."""
|
|
model_ids = [m.id for m in MIMO_TOKENPLAN_MODELS]
|
|
assert "mimo-v2.5-pro" in model_ids
|
|
assert "mimo-v2.5" in model_ids
|
|
assert len(MIMO_TOKENPLAN_MODELS) == 2
|
|
|
|
|
|
def test_mimo_models_attributes() -> None:
|
|
"""Verify MiMo Token Plan model attributes."""
|
|
for model in MIMO_TOKENPLAN_MODELS:
|
|
if model.id == "mimo-v2.5":
|
|
assert model.supports_image is True
|
|
assert model.supports_video is True
|
|
else:
|
|
assert model.supports_image is False
|
|
assert model.supports_video is False
|
|
assert model.probe_source == "documentation"
|
|
|
|
|
|
@pytest.fixture
|
|
def isolated_secret_dir(monkeypatch, tmp_path):
|
|
secret_dir = tmp_path / ".pineagents.secret"
|
|
monkeypatch.setattr(provider_manager_module, "SECRET_DIR", secret_dir)
|
|
return secret_dir
|
|
|
|
|
|
def test_mimo_registered_in_provider_manager(
|
|
isolated_secret_dir,
|
|
) -> None:
|
|
"""MiMo Token Plan provider should be registered as a built-in provider."""
|
|
manager = ProviderManager()
|
|
|
|
provider = manager.get_provider("mimo-tokenplan")
|
|
assert provider is not None
|
|
assert isinstance(provider, OpenAIProvider)
|
|
assert provider.base_url == "https://token-plan-cn.xiaomimimo.com/v1"
|
|
assert provider.name == "Xiaomi MiMo Token Plan"
|
|
|
|
|
|
def test_mimo_has_expected_models(isolated_secret_dir) -> None:
|
|
"""MiMo Token Plan provider should include built-in models."""
|
|
manager = ProviderManager()
|
|
provider = manager.get_provider("mimo-tokenplan")
|
|
|
|
assert provider is not None
|
|
assert provider.has_model("mimo-v2.5-pro")
|
|
assert provider.has_model("mimo-v2.5")
|
|
|
|
|
|
def test_mimo_provider_list_includes_mimo(isolated_secret_dir) -> None:
|
|
"""ProviderManager should list MiMo Token Plan in available providers."""
|
|
manager = ProviderManager()
|
|
# Verify the provider exists in builtin_providers
|
|
assert "mimo-tokenplan" in manager.builtin_providers
|
|
assert manager.get_provider("mimo-tokenplan") is not None
|