Coverage for api\tests\test_lieu.py: 100%
84 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
1from django.test import TestCase
2from rest_framework.test import APIClient
3from rest_framework import status
4from api.models import Lieu
5from users.models.base_user import User
6from django.urls import reverse
8# ---------- MODELE ----------
9class LieuModelTest(TestCase):
10 def test_str_representation(self):
11 lieu = Lieu.objects.create(nom="Stade de France")
12 self.assertEqual(str(lieu), "Stade de France")
14# ---------- SERIALIZER ----------
15from api.serializers import LieuSerializer
17class LieuSerializerTest(TestCase):
18 def test_serializer_content(self):
19 lieu = Lieu.objects.create(nom="Roland-Garros")
20 serializer = LieuSerializer(instance=lieu)
21 self.assertEqual(serializer.data, {'id': lieu.id, 'nom': "Roland-Garros"})
23# ---------- API ----------
24class LieuAPITest(TestCase):
25 def setUp(self):
26 self.client = APIClient()
27 self.lieu = Lieu.objects.create(nom="Accor Arena")
29 self.admin_user = User.objects.create_admin(
30 email="admin@example.com",
31 password="Adminp@ss123456789",
32 )
33 self.super_user = User.objects.create_superuser(
34 email="super@example.com",
35 password="Superp@ss123456789",
36 )
37 self.normal_user = User.objects.create_user(
38 email="user@example.com",
39 password="Userp@ss123456789",
40 )
42 def test_get_list_lieux(self):
43 response = self.client.get(reverse('lieu-list'))
44 self.assertEqual(response.status_code, status.HTTP_200_OK)
45 self.assertIn("Accor Arena", str(response.data))
47 def test_get_detail_lieu(self):
48 response = self.client.get(reverse('lieu-detail', kwargs={'pk': self.lieu.id}))
49 self.assertEqual(response.status_code, status.HTTP_200_OK)
50 self.assertEqual(response.data['nom'], self.lieu.nom)
52 def test_create_lieu_unauthenticated_fail(self):
53 response = self.client.post(reverse('lieu-create'), data={'nom': 'Nouveau Lieu'})
54 self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
56 def test_create_lieu_user_fail(self):
57 self.client.login(email="user@example.com", password="Userp@ss123456789")
58 self.client.force_authenticate(user=self.normal_user)
59 response = self.client.post(reverse('lieu-create'), data={'nom': 'Lieu Interdit'})
60 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
62 def test_create_lieu_admin_succed(self):
63 self.client.force_authenticate(user=self.admin_user)
64 response = self.client.post(reverse('lieu-create'), data={'nom': 'Lieu Admin'})
65 self.assertEqual(response.status_code, status.HTTP_201_CREATED)
66 self.assertTrue(Lieu.objects.filter(nom='Lieu Admin').exists())
68 def test_update_lieu_unauthenticated_fail(self):
69 url = reverse('lieu-update', kwargs={'pk': self.lieu.id})
70 response = self.client.put(url, data={'nom': 'Lieu Modifié'})
71 self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
72 self.lieu.refresh_from_db()
73 self.assertEqual(self.lieu.nom, 'Accor Arena')
75 def test_update_lieu_user_fail(self):
76 self.client.login(email="user@example.com", password="Userp@ss123456789")
77 self.client.force_authenticate(user=self.normal_user)
78 url = reverse('lieu-update', kwargs={'pk': self.lieu.id})
79 response = self.client.put(url, data={'nom': 'Lieu Modifié'})
80 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
81 self.lieu.refresh_from_db()
82 self.assertEqual(self.lieu.nom, 'Accor Arena')
84 def test_update_lieu_admin_succed(self):
85 self.client.force_authenticate(user=self.admin_user)
86 url = reverse('lieu-update', kwargs={'pk': self.lieu.id})
87 response = self.client.put(url, data={'nom': 'Lieu Modifié'})
88 self.assertEqual(response.status_code, status.HTTP_200_OK)
89 self.lieu.refresh_from_db()
90 self.assertEqual(self.lieu.nom, 'Lieu Modifié')
92 def test_delete_lieu_unauthenticated_fail(self):
93 url = reverse('lieu-delete', kwargs={'pk': self.lieu.id})
94 response = self.client.put(url, data={'nom': 'Lieu Modifié'})
95 self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
96 response = self.client.delete(url)
97 self.assertTrue(Lieu.objects.filter(pk=self.lieu.id).exists())
99 def test_delete_lieu_user_fail(self):
100 self.client.login(email="user@example.com", password="Userp@ss123456789")
101 self.client.force_authenticate(user=self.normal_user)
102 url = reverse('lieu-delete', kwargs={'pk': self.lieu.id})
103 response = self.client.delete(url)
104 self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
105 self.assertTrue(Lieu.objects.filter(pk=self.lieu.id).exists())
107 def test_delete_lieu_admin_succed(self):
108 self.client.force_authenticate(user=self.admin_user)
109 url = reverse('lieu-delete', kwargs={'pk': self.lieu.id})
110 response = self.client.delete(url)
111 self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
112 self.assertFalse(Lieu.objects.filter(pk=self.lieu.id).exists())