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)