Skip to content
Snippets Groups Projects
Commit 7999aced authored by Piotr Gawron's avatar Piotr Gawron
Browse files

unit tests for filtering and sorting

parent d31932a9
No related branches found
No related tags found
1 merge request!34Performance of subject list
Pipeline #
......@@ -9,7 +9,8 @@ from django.urls import reverse
from web.tests.functions import create_subject, create_worker, create_appointment_type, create_location, \
create_get_suffix
from web.views.subject import SUBJECT_LIST_GENERIC, SUBJECT_LIST_NO_VISIT, SUBJECT_LIST_REQUIRE_CONTACT
from web.api_views import get_subjects_order
from web.api_views import get_subjects_order, get_subjects_filtered, serialize_subject
from web.models import Subject
......@@ -188,6 +189,24 @@ class TestApi(TestCase):
self.assertEqual(response.status_code, 200)
self.assertTrue(name in response.content)
def check_subject_filtered(self, filters, result):
subjects = get_subjects_filtered(Subject.objects.all(), filters)
self.assertEqual(len(result), subjects.count())
for index in range(len(result)):
self.assertEqual(result[index], subjects[index])
def check_subject_ordered(self, order, result):
subjects = get_subjects_order(Subject.objects.all(), order, "asc")
self.assertEqual(len(result), subjects.count())
for index in range(len(result)):
self.assertEqual(result[index], subjects[index])
subjects = get_subjects_order(Subject.objects.all(), order, "desc")
length = len(result)
self.assertEqual(length, subjects.count())
for index in range(length):
self.assertEqual(result[length - index - 1], subjects[index])
def test_subjects_sort_nd_number(self):
subject = self.subject
subject.nd_number = "PPP"
......@@ -197,10 +216,12 @@ class TestApi(TestCase):
subject2.nd_number = "QQQ"
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "nd_number", "desc")
self.check_subject_ordered("nd_number", [subject, subject2])
self.assertEqual(subject2, subjects[0])
self.assertEqual(subject, subjects[1])
def test_subjects_sort_default_location(self):
subject = self.subject
self.check_subject_ordered("default_location", [subject])
def test_subjects_sort_screening_number(self):
subject = self.subject
......@@ -211,10 +232,7 @@ class TestApi(TestCase):
subject2.screening_number = "QQQ"
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "screening_number", "asc")
self.assertEqual(subject, subjects[0])
self.assertEqual(subject2, subjects[1])
self.check_subject_ordered("screening_number", [subject, subject2])
def test_subjects_sort_last_name(self):
subject = self.subject
......@@ -225,10 +243,7 @@ class TestApi(TestCase):
subject2.last_name = "YYY"
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "last_name", "desc")
self.assertEqual(subject2, subjects[0])
self.assertEqual(subject, subjects[1])
self.check_subject_ordered("last_name", [subject, subject2])
def test_subjects_sort_dead(self):
subject = self.subject
......@@ -239,13 +254,7 @@ class TestApi(TestCase):
subject2.dead = False
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "dead", "asc")
self.assertEqual(subject2, subjects[0])
self.assertEqual(subject, subjects[1])
subjects = get_subjects_order(Subject.objects.all(), "dead", "desc")
self.assertEqual(subject, subjects[0])
self.assertEqual(subject2, subjects[1])
self.check_subject_ordered("dead", [subject2, subject])
def test_subjects_sort_resigned(self):
subject = self.subject
......@@ -256,13 +265,7 @@ class TestApi(TestCase):
subject2.resigned = False
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "resigned", "asc")
self.assertEqual(subject2, subjects[0])
self.assertEqual(subject, subjects[1])
subjects = get_subjects_order(Subject.objects.all(), "resigned", "desc")
self.assertEqual(subject, subjects[0])
self.assertEqual(subject2, subjects[1])
self.check_subject_ordered("resigned", [subject2, subject])
def test_subjects_sort_postponed(self):
subject = self.subject
......@@ -273,12 +276,92 @@ class TestApi(TestCase):
subject2.postponed = False
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "postponed", "asc")
self.assertEqual(subject2, subjects[0])
self.assertEqual(subject, subjects[1])
self.check_subject_ordered("postponed", [subject2, subject])
def test_subjects_filter_dead(self):
subject = self.subject
subject.dead = True
subject.save()
subject2 = create_subject(2)
subject2.dead = False
subject2.save()
self.check_subject_filtered([["dead", "true"]], [subject])
self.check_subject_filtered([["dead", "false"]], [subject2])
def test_subjects_filter_nd_number(self):
subject = self.subject
subject.nd_number = "PPP"
subject.save()
subject2 = create_subject(2)
subject2.nd_number = "QQQ"
subject2.save()
self.check_subject_filtered([["nd_number", "P"]], [subject])
def test_subjects_filter_screening_number(self):
subject = self.subject
subject.screening_number = "PPP"
subject.save()
subject2 = create_subject(2)
subject2.screening_number = "QQQ"
subject2.save()
subjects = get_subjects_order(Subject.objects.all(), "postponed", "desc")
self.assertEqual(subject, subjects[0])
self.assertEqual(subject2, subjects[1])
self.check_subject_filtered([["screening_number", "Q"]], [subject2])
def test_subjects_filter_last_name(self):
subject = self.subject
subject.last_name = "XXX"
subject.save()
subject2 = create_subject(2)
subject2.last_name = "YYY"
subject2.save()
self.check_subject_filtered([["last_name", "Q"]], [])
def test_subjects_filter_resigned(self):
subject = self.subject
subject.resigned = True
subject.save()
subject2 = create_subject(2)
subject2.resigned = False
subject2.save()
self.check_subject_filtered([["resigned", "true"]], [subject])
self.check_subject_filtered([["resigned", "false"]], [subject2])
def test_subjects_filter_postponed(self):
subject = self.subject
subject.postponed = True
subject.save()
subject2 = create_subject(2)
subject2.postponed = False
subject2.save()
self.check_subject_filtered([["postponed", "true"]], [subject])
self.check_subject_filtered([["postponed", "false"]], [subject2])
def test_subjects_filter_default_location(self):
subject = self.subject
self.check_subject_filtered([["default_location", str(subject.default_location.id)]], [subject])
self.check_subject_filtered([["default_location", "-1"]], [])
def test_subjects_filter_unknown(self):
subject = self.subject
self.check_subject_filtered([["some_unknown", "zxczxc"]], [subject])
self.check_subject_filtered([["", ""]], [subject])
def test_serialize_subject(self):
subject = self.subject
subject.dead = True
subject_json = serialize_subject(subject);
self.assertEqual("YES", subject_json["dead"]);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment