from django.test import TestCase, Client from django.urls import reverse from django.utils import timezone from django.contrib.auth.models import User from accounts.models import Department, Instructor, Student from .models import Code, Period from .forms import AttendanceUpdateForm # Code # student # station_number # Period # student # station_number class CodeModelTests(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, ) self.code = Code.objects.create(student=self.student, station_number=22) def test_code_qr_code_str(self): """test_qr_code_str() returns a string joining on ':' and contains student_number""" self.assertEqual("357950:22", self.code.qr_code_str()) class TestForms(TestCase): def setUp(self): pass def test_attendance_update_form(self): form = AttendanceUpdateForm(data={ 'qr_string': '357950:22' }) self.assertTrue(form.is_valid()) class TestPeriodViews(TestCase): def setUp(self): self.client = Client() self.reverse_urls = { # 'list': reverse('period-list'), # 'create': reverse('period-create'), 'detail': reverse('period-detail', args=['1']), 'update': reverse('period-update', args=['1']), 'delete': reverse('period-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.period = Period.objects.create( student = self.student, station_number = 22, ) self.client.force_login(self.peter) # def test_period_create_GET(self): # response = self.client.get(self.reverse_urls['create']) # self.assertEquals(response.status_code, 200) # self.assertTemplateUsed(response, 'attendance/period_form.html') # def test_period_create_POST(self): # response = self.client.post(self.reverse_urls['create'], { # 'student': self.student.id, # 'station_number': 22, # }, follow=True) # self.assertRedirects( # response, # reverse('period-detail', args=[self.a_shift.id]), # status_code=302, # target_status_code=200, # fetch_redirect_response=True # ) def test_period_detail(self): response = self.client.get(self.reverse_urls['detail']) self.assertEquals(response.status_code, 200) self.assertTemplateUsed(response, 'attendance/period_detail.html') def test_period_update_GET(self): response = self.client.get(self.reverse_urls['update']) self.assertEquals(response.status_code, 200) self.assertTemplateUsed(response, 'attendance/period_form.html')