Spaces:
Build error
Build error
Download tests/api/test_explore.py from MissawB/animetix-web: direct link, hf CLI and curl.
- Browser
- Download file 2.36 kB
-
https://huggingface.co/spaces/MissawB/animetix-web/resolve/main/tests/api/test_explore.py
- Command line
-
hf download hf://spaces/MissawB/animetix-web/tests/api/test_explore.py
-
curl -L -o test_explore.py https://huggingface.co/spaces/MissawB/animetix-web/resolve/main/tests/api/test_explore.py
2.36 kB
| import pytest | |
| from animetix.models import MediaItem, UserRecommendation | |
| from django.contrib.auth.models import User | |
| from django.core.cache import cache | |
| from django.urls import reverse | |
| from rest_framework import status | |
| def _reset_catalog_cache(): | |
| import sys | |
| cache.clear() | |
| mod = sys.modules.get("animetix.containers") | |
| if mod is not None: | |
| try: | |
| mod.container.core.catalog_service()._cached_catalogs.clear() | |
| except Exception: | |
| pass | |
| def test_explore_returns_feed_shape(api_client): | |
| for i in range(1, 8): | |
| MediaItem.objects.create( | |
| external_id=str(i), | |
| media_type="Anime", | |
| title=f"A{i}", | |
| popularity=10 - i, | |
| rating=8.0, | |
| metadata={"genres": ["Action"]}, | |
| ) | |
| _reset_catalog_cache() | |
| url = reverse("api_explore") | |
| response = api_client.get(url, {"media_type": "Anime"}) | |
| assert response.status_code == status.HTTP_200_OK | |
| assert "rows" in response.data | |
| assert "personalized" in response.data | |
| assert response.data["personalized"] is False # anonyme → cold-start | |
| kinds = {r["kind"] for r in response.data["rows"]} | |
| assert kinds & {"top_rated", "new"} | |
| def test_explore_personalized_with_recommendation(api_client): | |
| user = User.objects.create_user(username="testuser", password="password") | |
| api_client.force_authenticate(user=user) | |
| media = MediaItem.objects.create( | |
| external_id="test-1", | |
| title="Test Media", | |
| media_type="Anime", | |
| popularity=5, | |
| rating=8.0, | |
| metadata={"genres": ["Action"]}, | |
| ) | |
| for i in range(2, 7): | |
| MediaItem.objects.create( | |
| external_id=str(i), | |
| media_type="Anime", | |
| title=f"A{i}", | |
| popularity=i, | |
| rating=7.0, | |
| metadata={"genres": ["Action"]}, | |
| ) | |
| UserRecommendation.objects.create(user=user, media_item=media, score=0.9, rank=1) | |
| _reset_catalog_cache() | |
| url = reverse("api_explore") | |
| response = api_client.get(url, {"media_type": "Anime"}) | |
| assert response.status_code == status.HTTP_200_OK | |
| assert response.data["personalized"] is True | |
| assert response.data["rows"][0]["kind"] == "ai_reco" | |
| assert response.data["rows"][0]["items"][0]["id"] == "test-1" | |