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

105 lines
3.7 KiB
Python

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')