Skip to content

Commit 9208770

Browse files
committed
test(profiles/trainers): add tests for Trainer CBViews
1 parent bacc006 commit 9208770

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

profiles/tests/trainers/test_views.py

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
from django.test import TestCase, Client
2+
from django.urls import reverse
3+
from profiles.models import Trainer
4+
5+
6+
class TrainerViewsTest(TestCase):
7+
@classmethod
8+
def setUpTestData(cls):
9+
"""Create shared data for all tests."""
10+
cls.trainer = Trainer.objects.create(
11+
first_name='Paolo',
12+
last_name='Bianchi',
13+
fiscal_code='BNCPLO80A01H211B'
14+
)
15+
16+
def setUp(self):
17+
"""Set up the client for testing."""
18+
self.client = Client()
19+
20+
# Test ListView
21+
def test_trainer_list_view(self):
22+
"""Test that the Trainer ListView returns a 200 status code and uses the correct template."""
23+
url = reverse('trainer_list')
24+
response = self.client.get(url)
25+
self.assertEqual(response.status_code, 200)
26+
self.assertTemplateUsed(response, 'profiles/trainer_list.html')
27+
self.assertIn(self.trainer, response.context['trainer_list'])
28+
29+
# Test DetailView
30+
def test_trainer_detail_view(self):
31+
"""Test that the Trainer DetailView returns a 200 status code and displays the correct object."""
32+
url = reverse('trainer_detail', kwargs={"pk": self.trainer.pk})
33+
response = self.client.get(url)
34+
self.assertEqual(response.status_code, 200)
35+
self.assertTemplateUsed(response, 'profiles/trainer_detail.html')
36+
self.assertEqual(response.context['trainer_detail'], self.trainer)
37+
38+
# Test CreateView
39+
def test_trainer_create_view(self):
40+
"""Test creating a new trainer."""
41+
url = reverse('trainer_create')
42+
payload = {
43+
'first_name': 'Luigi',
44+
'last_name': 'Bianchi',
45+
'fiscal_code': 'BNCLGI95E15H211B',
46+
}
47+
response = self.client.post(url, payload)
48+
self.assertEqual(response.status_code, 302)
49+
self.assertEqual(Trainer.objects.count(), 2)
50+
new_trainer = Trainer.objects.get(fiscal_code='BNCLGI95E15H211B')
51+
self.assertEqual(new_trainer.first_name, 'Luigi')
52+
self.assertEqual(new_trainer.last_name, 'Bianchi')
53+
54+
# Test UpdateView
55+
def test_trainer_update_view(self):
56+
"""Test updating an existing trainer."""
57+
url = reverse('trainer_update', kwargs={"pk": self.trainer.pk})
58+
payload = {
59+
'first_name': 'Mario Updated',
60+
'last_name': 'Rossi',
61+
'fiscal_code': 'RSSMRA90A01H211C',
62+
}
63+
response = self.client.post(url, payload)
64+
self.assertEqual(response.status_code, 302) # Redirect after update
65+
self.trainer.refresh_from_db()
66+
self.assertEqual(self.trainer.first_name, 'Mario Updated')
67+
self.assertEqual(self.trainer.last_name, 'Rossi')
68+
self.assertEqual(self.trainer.fiscal_code, 'RSSMRA90A01H211C')
69+
70+
# Test DeleteView
71+
def test_trainer_delete_view(self):
72+
"""Test deleting a trainer."""
73+
url = reverse('trainer_delete', kwargs={"pk": self.trainer.pk})
74+
response = self.client.post(url)
75+
self.assertEqual(response.status_code, 302)
76+
self.assertFalse(Trainer.objects.filter(pk=self.trainer.pk).exists())

0 commit comments

Comments
 (0)