Skip to content
Snippets Groups Projects

Performance of subject list

Merged Piotr Gawron requested to merge 84-performance-of-subject-list into master
1 file
+ 115
32
Compare changes
  • Side-by-side
  • Inline
+ 115
32
@@ -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"]);
Loading