2021-01-29 19:28:52 -07:00

108 lines
4.1 KiB
Python

import json
from django.test import TestCase, Client
from django.urls import reverse
from django.utils import timezone
from django.contrib.auth.models import User
from .models import Department, Instructor, Student
class TestModels(TestCase):
def setUp(self):
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
self.department = Department.objects.create(name = "Blandings Castle")
self.student = Student.objects.create(
user = self.peter,
student_number = 357950,
department = self.department,
)
self.instructor = Instructor.objects.create(
user = self.nick,
department = self.department,
)
def test_student_user_relationship(self):
self.assertEquals(self.peter, self.student.user)
def test_student_get_absolute_url(self):
url = self.student.get_absolute_url()
self.assertEquals(url, '/accounts/1/')
def test_instructor_user_relationship(self):
self.assertEquals(self.nick, self.instructor.user)
def test_instructor_get_absolute_url(self):
url = self.instructor.get_absolute_url()
self.assertEquals(url, '/accounts/1/')
class TestViews(TestCase):
def setUp(self):
self.client = Client()
self.reverse_urls = {
'list': reverse('account-list'),
'create': reverse('account-create'),
'detail': reverse('account-detail', args=['1']),
'update': reverse('account-update', args=['1']),
'delete': reverse('account-delete', args=['1'])
}
self.peter = User.objects.create_user('Peter Templer', 'peter@testing.com', 'peterspassword321')
self.nick = User.objects.create_user('Nick Jenkins', 'nick@testing.com', 'nickspassword321')
self.department = Department.objects.create(name = "Blandings Castle")
self.student = Student.objects.create(
user = self.peter,
student_number = 357950,
department = self.department,
)
self.instructor = Instructor.objects.create(
user = self.nick,
department = self.department,
)
self.client.force_login(self.peter)
def test_students_list(self):
response = self.client.get(self.reverse_urls['list'])
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'accounts/account_list.html')
def test_students_create_GET(self):
response = self.client.get(self.reverse_urls['create'])
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'accounts/account_form.html')
def test_students_create_POST(self):
response = self.client.post(self.reverse_urls['create'], {
'user': self.peter.id,
'student_number': 357950,
'department': self.department,
}, follow=True)
self.assertRedirects(
response,
reverse('account-detail', args=[self.peter.id]),
status_code=302,
target_status_code=200,
fetch_redirect_response=True
)
def test_students_detail(self):
response = self.client.get(self.reverse_urls['detail'])
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'accounts/account_detail.html')
def test_students_update_GET(self):
response = self.client.get(self.reverse_urls['update'])
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'accounts/account_form.html')
def test_students_update_POST(self):
pass
def test_student_delete(self):
response = self.client.get(self.reverse_urls['delete'])
self.assertEquals(response.status_code, 200)
self.assertTemplateUsed(response, 'accounts/account_confirm_delete.html')
def test_student_delete(self):
response = self.client.delete(self.reverse_urls['delete'], json.dumps({ 'id': 1 }))
self.assertEquals(response.status_code, 302)