animetix-web / tests /backend /test_api_views.py
MissawB's picture
Upload folder using huggingface_hub
072bcf7 verified
Raw
History Blame Contribute Delete
2.43 kB
import pytest
from django.urls import reverse
from rest_framework.test import APIClient
from animetix.models import DailyChallenge, Achievement
from django.contrib.auth.models import User
@pytest.fixture
def api_client():
return APIClient()
@pytest.fixture
def authenticated_client(api_client):
user = User.objects.create_user(username='testuser', password='password')
api_client.force_authenticate(user=user)
return api_client
@pytest.mark.django_db
def test_profile_me_endpoint(authenticated_client):
"""Vérifie que l'utilisateur peut récupérer son propre profil."""
url = reverse('profile-me')
response = authenticated_client.get(url)
assert response.status_code == 200
assert response.data['user']['username'] == 'testuser'
@pytest.mark.django_db
def test_daily_challenge_list(api_client):
"""Vérifie la liste des défis quotidiens."""
DailyChallenge.objects.create(date='2026-05-03', media_type='Anime', secret_title='Naruto')
url = reverse('dailychallenge-list')
response = api_client.get(url)
assert response.status_code == 200
assert len(response.data) >= 1
assert response.data[0]['secret_title'] == 'Naruto'
@pytest.mark.django_db
def test_media_search_empty_query(api_client, mocker):
"""Vérifie la recherche média sans query (retourne les plus populaires)."""
# Mocker le service pour éviter de charger ChromaDB en test
mock_service = mocker.patch('animetix.api_views.animetix_service')
mock_service.load_data.return_value = {
'lookup': [{'title': 'One Piece', 'id': 1}, {'title': 'Bleach', 'id': 2}]
}
url = reverse('media-search')
response = api_client.get(url, {'media_type': 'Anime', 'limit': 1})
assert response.status_code == 200
assert len(response.data) == 1
assert response.data[0]['title'] == 'One Piece'
@pytest.mark.django_db
def test_media_search_with_query(api_client, mocker):
"""Vérifie le filtrage de la recherche média par titre."""
mock_service = mocker.patch('animetix.api_views.animetix_service')
mock_service.load_data.return_value = {
'lookup': [{'title': 'Dragon Ball', 'id': 1}, {'title': 'Naruto', 'id': 2}]
}
url = reverse('media-search')
response = api_client.get(url, {'q': 'Dragon'})
assert response.status_code == 200
assert len(response.data) == 1
assert response.data[0]['title'] == 'Dragon Ball'