Claude_Code / tests /api /test_models_validators.py
Jainish1808
Move project files to repository root for Hugging Face Space
bf177ff
Raw
History Blame Contribute Delete
5.89 kB
from unittest.mock import patch
import pytest
from api.models.anthropic import Message, MessagesRequest, TokenCountRequest
from config.settings import Settings
@pytest.fixture
def mock_settings():
settings = Settings()
settings.model = "nvidia_nim/target-model-from-settings"
settings.model_opus = None
settings.model_sonnet = None
settings.model_haiku = None
return settings
def test_messages_request_map_model_claude_to_default(mock_settings):
with patch("api.models.anthropic.get_settings", return_value=mock_settings):
request = MessagesRequest(
model="claude-3-opus",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "target-model-from-settings"
assert request.original_model == "claude-3-opus"
def test_messages_request_map_model_with_provider_prefix(mock_settings):
with patch("api.models.anthropic.get_settings", return_value=mock_settings):
request = MessagesRequest(
model="anthropic/claude-3-haiku",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "target-model-from-settings"
def test_token_count_request_model_validation(mock_settings):
with patch("api.models.anthropic.get_settings", return_value=mock_settings):
request = TokenCountRequest(
model="claude-3-sonnet", messages=[Message(role="user", content="hello")]
)
assert request.model == "target-model-from-settings"
def test_messages_request_model_mapping_logs(mock_settings):
with (
patch("api.models.anthropic.get_settings", return_value=mock_settings),
patch("api.models.anthropic.logger.debug") as mock_log,
):
MessagesRequest(
model="claude-2.1",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
mock_log.assert_called()
args = mock_log.call_args[0][0]
assert "MODEL MAPPING" in args
assert "claude-2.1" in args
assert "target-model-from-settings" in args
def test_messages_request_resolved_provider_model_default(mock_settings):
"""resolved_provider_model is set to the full model string."""
with patch("api.models.anthropic.get_settings", return_value=mock_settings):
request = MessagesRequest(
model="claude-3-opus",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert (
request.resolved_provider_model == "nvidia_nim/target-model-from-settings"
)
def test_messages_request_model_aware_opus_override():
"""Opus model routes to MODEL_OPUS when set."""
settings = Settings()
settings.model = "nvidia_nim/fallback-model"
settings.model_opus = "open_router/deepseek/deepseek-r1"
with patch("api.models.anthropic.get_settings", return_value=settings):
request = MessagesRequest(
model="claude-opus-4-20250514",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "deepseek/deepseek-r1"
assert request.resolved_provider_model == "open_router/deepseek/deepseek-r1"
assert request.original_model == "claude-opus-4-20250514"
def test_messages_request_model_aware_haiku_override():
"""Haiku model routes to MODEL_HAIKU when set."""
settings = Settings()
settings.model = "nvidia_nim/fallback-model"
settings.model_haiku = "lmstudio/qwen2.5-7b"
with patch("api.models.anthropic.get_settings", return_value=settings):
request = MessagesRequest(
model="claude-3-haiku-20240307",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "qwen2.5-7b"
assert request.resolved_provider_model == "lmstudio/qwen2.5-7b"
def test_messages_request_model_aware_sonnet_override():
"""Sonnet model routes to MODEL_SONNET when set."""
settings = Settings()
settings.model = "nvidia_nim/fallback-model"
settings.model_sonnet = "nvidia_nim/meta/llama-3.3-70b-instruct"
with patch("api.models.anthropic.get_settings", return_value=settings):
request = MessagesRequest(
model="claude-sonnet-4-20250514",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "meta/llama-3.3-70b-instruct"
assert (
request.resolved_provider_model == "nvidia_nim/meta/llama-3.3-70b-instruct"
)
def test_messages_request_model_fallback_when_not_set():
"""When model override is None, falls back to MODEL."""
settings = Settings()
settings.model = "nvidia_nim/fallback-model"
settings.model_opus = None
settings.model_sonnet = None
settings.model_haiku = None
# model_opus is None
with patch("api.models.anthropic.get_settings", return_value=settings):
request = MessagesRequest(
model="claude-opus-4-20250514",
max_tokens=100,
messages=[Message(role="user", content="hello")],
)
assert request.model == "fallback-model"
assert request.resolved_provider_model == "nvidia_nim/fallback-model"
def test_token_count_request_model_aware():
"""TokenCountRequest also uses model-aware resolution."""
settings = Settings()
settings.model = "nvidia_nim/fallback-model"
settings.model_haiku = "lmstudio/qwen2.5-7b"
with patch("api.models.anthropic.get_settings", return_value=settings):
request = TokenCountRequest(
model="claude-3-haiku-20240307",
messages=[Message(role="user", content="hello")],
)
assert request.model == "qwen2.5-7b"