Add inital unittests
This commit is contained in:
parent
cca541f313
commit
787066d474
@ -19,7 +19,7 @@ class Instructor(models.Model):
|
|||||||
modified = models.DateTimeField(auto_now=True)
|
modified = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('user-detail', kwargs={'pk': self.pk})
|
return reverse('account-detail', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.user.first_name} {self.user.last_name}'
|
return f'{self.user.first_name} {self.user.last_name}'
|
||||||
@ -34,7 +34,7 @@ class Student(models.Model):
|
|||||||
modified = models.DateTimeField(auto_now=True)
|
modified = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('user-detail', kwargs={'pk': self.pk})
|
return reverse('account-detail', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.student_number}: {self.user.first_name} {self.user.last_name}'
|
return f'{self.student_number}: {self.user.first_name} {self.user.last_name}'
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{ user.username }}</td>
|
<td>{{ user.username }}</td>
|
||||||
<td>{{user.first_name}} {{user.last_name}}</td>
|
<td>{{user.first_name}} {{user.last_name}}</td>
|
||||||
<td><a href="{% url 'user-detail' user.id %}">Update</a></td>
|
<td><a href="{% url 'account-detail' user.id %}">Update</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<tr><td>No users yet.</td></tr>
|
<tr><td>No users yet.</td></tr>
|
||||||
|
|||||||
@ -1,3 +1,108 @@
|
|||||||
from django.test import TestCase
|
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
|
||||||
|
|
||||||
# Create your tests here.
|
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)
|
||||||
@ -1,3 +1,104 @@
|
|||||||
from django.test import TestCase
|
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')
|
||||||
|
|
||||||
# Create your tests here.
|
|
||||||
|
|||||||
@ -41,8 +41,10 @@ class AttendanceOverview(LoginRequiredMixin, TemplateView):
|
|||||||
).order_by('-clocked_in'
|
).order_by('-clocked_in'
|
||||||
).aggregate(total_duration=Sum('duration'))
|
).aggregate(total_duration=Sum('duration'))
|
||||||
|
|
||||||
|
hours = ""
|
||||||
# Convert to hours floating point
|
# Convert to hours floating point
|
||||||
hours = round((total_duration['total_duration'].total_seconds() / 3600), 2)
|
if hasattr(total_duration, 'total_duration'):
|
||||||
|
hours = round((total_duration['total_duration'].total_seconds() / 3600), 2)
|
||||||
|
|
||||||
context['period_list'] = Period.objects.filter(
|
context['period_list'] = Period.objects.filter(
|
||||||
student=self.request.user.student
|
student=self.request.user.student
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user