Files
django/students/tests.py

43 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.contrib.auth import get_user_model
from django.test import TestCase
from django.urls import reverse
from .models import Student
class StudentManagementTests(TestCase):
def setUp(self):
self.user = get_user_model().objects.create_user(username='manager', password='Strong-pass-123')
self.student = Student.objects.create(first_name='سارا', last_name='احمدی', age=10, grade='چهارم')
def test_dashboard_requires_login(self):
response = self.client.get(reverse('dashboard'))
self.assertRedirects(response, f'{reverse("login")}?next={reverse("dashboard")}')
def test_manager_can_create_update_and_delete_student(self):
self.client.force_login(self.user)
create_response = self.client.post(reverse('student_add'), {
'first_name': 'علی', 'last_name': 'رضایی', 'age': 11, 'grade': 'پنجم',
})
self.assertRedirects(create_response, reverse('dashboard'))
new_student = Student.objects.get(first_name='علی')
update_response = self.client.post(reverse('student_edit', args=[new_student.pk]), {
'first_name': 'علی', 'last_name': 'کریمی', 'age': 12, 'grade': 'ششم',
})
self.assertRedirects(update_response, reverse('dashboard'))
new_student.refresh_from_db()
self.assertEqual(new_student.last_name, 'کریمی')
delete_response = self.client.post(reverse('student_delete', args=[new_student.pk]))
self.assertRedirects(delete_response, reverse('dashboard'))
self.assertFalse(Student.objects.filter(pk=new_student.pk).exists())
def test_invalid_age_is_rejected(self):
self.client.force_login(self.user)
response = self.client.post(reverse('student_add'), {
'first_name': 'نوید', 'last_name': 'محمدی', 'age': 3, 'grade': 'اول',
})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'سن باید بین ۵ تا ۲۵ سال باشد')