animetix-web / tests /core /test_brain.py
MissawB's picture
Upload folder using huggingface_hub
072bcf7 verified
Raw
History Blame Contribute Delete
2.2 kB
import pytest
from core.brain import app
from fastapi.testclient import TestClient
import os
from unittest.mock import patch
client = TestClient(app)
def test_health_check_api_mode():
"""Vérifie que le health check indique le mode Fallback si aucun modèle n'est chargé."""
# On s'assure que le modèle est None pour ce test
with patch("core.brain.model", None):
response = client.get("/")
assert response.status_code == 200
assert response.json()["status"] == "online"
assert response.json()["engine"] == "Fallback-API"
def test_health_check_local_mode():
"""Vérifie que le health check indique le mode Local si un modèle est chargé."""
with patch("core.brain.model", "MockModel"):
response = client.get("/")
assert response.status_code == 200
assert response.json()["engine"] == "Animetix-Expert-Local"
@patch("requests.post")
def test_generate_fallback_huggingface(mock_post):
"""Vérifie que l'API bascule sur Hugging Face en cas d'absence de modèle local."""
# Configurer le mock pour simuler une réponse de Hugging Face
mock_post.return_value.status_code = 200
mock_post.return_value.json.return_value = [{"generated_text": "<|assistant|>\nVoici une réponse d'expert."}]
# Simuler l'absence de modèle local et présence de token
with patch("core.brain.model", None), \
patch.dict(os.environ, {"HF_TOKEN": "mock_token"}):
response = client.post("/generate", json={
"prompt": "Qui est Naruto ?",
"system_prompt": "Expert mode"
})
assert response.status_code == 200
assert "Voici une réponse d'expert" in response.json()["text"]
assert mock_post.called
def test_generate_no_provider_available():
"""Vérifie le message d'erreur si aucun provider (local ou API) n'est dispo."""
with patch("core.brain.model", None), \
patch.dict(os.environ, {}, clear=True):
response = client.post("/generate", json={"prompt": "test"})
assert response.status_code == 200
assert "aucune unité de calcul d'IA n'est disponible" in response.json()["text"]