system-prompts-and-models-o.../dealix/tests/unit/test_model_router.py
2026-05-01 14:03:52 +03:00

41 lines
1.2 KiB
Python

"""Unit tests for the ModelRouter routing + fallback logic."""
from __future__ import annotations
from core.config.models import (
FALLBACK_CHAIN,
TASK_ROUTING,
Provider,
Task,
get_fallbacks,
get_provider_for_task,
)
def test_every_task_has_provider():
for task in Task:
assert task in TASK_ROUTING, f"Task {task} has no routing"
assert isinstance(TASK_ROUTING[task], Provider)
def test_every_provider_has_fallback_chain():
for provider in Provider:
assert provider in FALLBACK_CHAIN
chain = FALLBACK_CHAIN[provider]
assert provider not in chain, f"{provider} should not fallback to itself"
assert all(isinstance(p, Provider) for p in chain)
def test_get_provider_for_task():
assert get_provider_for_task(Task.REASONING) == Provider.ANTHROPIC
assert get_provider_for_task(Task.ARABIC_TASKS) == Provider.GLM
assert get_provider_for_task(Task.CODE) == Provider.DEEPSEEK
assert get_provider_for_task(Task.CLASSIFICATION) == Provider.GROQ
assert get_provider_for_task(Task.RESEARCH) == Provider.GEMINI
def test_get_fallbacks_returns_list():
fallbacks = get_fallbacks(Provider.ANTHROPIC)
assert isinstance(fallbacks, list)
assert len(fallbacks) > 0