mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
46 lines
2.0 KiB
Python
46 lines
2.0 KiB
Python
from django.urls import reverse
|
|
from rest_framework import status
|
|
from rest_framework.test import APITestCase
|
|
|
|
from api.models import Category, Flavor, Rating, User
|
|
|
|
|
|
class FlavorTopTests(APITestCase):
|
|
def setUp(self) -> None:
|
|
self.category_energy = Category.objects.create(name="Energy", slug="energy")
|
|
self.category_iced_tea = Category.objects.create(name="Iced Tea", slug="iced-tea")
|
|
|
|
self.user = User.objects.create_user(username="testuser", password="password")
|
|
|
|
self.flavor1 = Flavor.objects.create(name="Energy 1", category=self.category_energy)
|
|
self.flavor2 = Flavor.objects.create(name="Iced Tea 1", category=self.category_iced_tea)
|
|
|
|
Rating.objects.create(user=self.user, flavor=self.flavor1, score=5)
|
|
Rating.objects.create(user=self.user, flavor=self.flavor2, score=4)
|
|
|
|
def test_top_flavors_all(self) -> None:
|
|
url = reverse("flavor-top")
|
|
response = self.client.get(url, follow=True)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data), 2)
|
|
|
|
def test_top_flavors_filtered_energy(self) -> None:
|
|
url = reverse("flavor-top")
|
|
response = self.client.get(url, {"category": "energy"}, follow=True)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data), 1)
|
|
self.assertEqual(response.data[0]["name"], "Energy 1")
|
|
|
|
def test_top_flavors_filtered_iced_tea(self) -> None:
|
|
url = reverse("flavor-top")
|
|
response = self.client.get(url, {"category": "iced-tea"}, follow=True)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data), 1)
|
|
self.assertEqual(response.data[0]["name"], "Iced Tea 1")
|
|
|
|
def test_top_flavors_filtered_non_existent(self) -> None:
|
|
url = reverse("flavor-top")
|
|
response = self.client.get(url, {"category": "non-existent"}, follow=True)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data), 0)
|