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

unit test for visit sorting

parent 487f1e8f
No related branches found
No related tags found
1 merge request!107Resolve "exceeded visits list & unfinished visits list"
# coding=utf-8
import datetime
import json
import logging
from django.urls import reverse
from web.api_views.visit import get_visits_filtered, get_visits_order
from web.models import Visit
from web.models.study_visit_list import VISIT_LIST_GENERIC, VISIT_LIST_EXCEEDED_TIME, VISIT_LIST_UNFINISHED, \
VISIT_LIST_MISSING_APPOINTMENTS, VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS, \
VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT
from web.tests import LoggedInWithWorkerTestCase
from web.tests.functions import create_study_subject, create_get_suffix, create_visit
from web.views.notifications import get_today_midnight_date
logger = logging.getLogger(__name__)
......@@ -17,6 +21,7 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
def setUp(self):
super(TestVisitApi, self).setUp()
self.study_subject = create_study_subject()
self.visit = create_visit(self.study_subject)
def test_get_columns(self):
response = self.client.get(reverse('web.api.visits.columns', kwargs={'visit_list_type': VISIT_LIST_GENERIC}))
......@@ -26,7 +31,8 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
self.assertTrue(len(columns) > 0)
def test_get_columns_for_time_exceeded(self):
response = self.client.get(reverse('web.api.visits.columns', kwargs={'visit_list_type': VISIT_LIST_EXCEEDED_TIME}))
response = self.client.get(
reverse('web.api.visits.columns', kwargs={'visit_list_type': VISIT_LIST_EXCEEDED_TIME}))
self.assertEqual(response.status_code, 200)
columns = json.loads(response.content)['columns']
......@@ -81,3 +87,96 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTrue(name in response.content)
def check_visit_filtered(self, filters, result):
subjects = get_visits_filtered(Visit.objects.all(), filters)
self.assertEqual(len(result), subjects.count())
for index in range(len(result)):
self.assertEqual(result[index], subjects[index])
def check_visit_ordered(self, order, result):
visits = get_visits_order(Visit.objects.all(), order, "asc")
self.assertEqual(len(result), visits.count())
for index in range(len(result)):
self.assertEqual(result[index], visits[index])
visits = get_visits_order(Visit.objects.all(), order, "desc")
length = len(result)
self.assertEqual(length, visits.count())
for index in range(length):
self.assertEqual(result[length - index - 1], visits[index])
def test_visits_sort_first_name(self):
subject = self.study_subject
subject.subject.first_name = "PPP"
subject.subject.save()
subject2 = create_study_subject(2)
subject2.subject.first_name = "QQQ"
subject2.subject.save()
visit2 = create_visit(subject2)
self.check_visit_ordered("first_name", [self.visit, visit2])
def test_visits_sort_last_name(self):
subject = self.study_subject
subject.subject.last_name = "PPP"
subject.subject.save()
subject2 = create_study_subject(2)
subject2.subject.last_name = "QQQ"
subject2.subject.save()
visit2 = create_visit(subject2)
self.check_visit_ordered("last_name", [self.visit, visit2])
def test_visits_sort_default_location(self):
self.check_visit_ordered("default_location", [self.visit])
def test_visits_sort_flying_team(self):
self.check_visit_ordered("flying_team", [self.visit])
def test_visits_sort_is_finished(self):
self.check_visit_ordered("is_finished", [self.visit])
def test_visits_sort_post_mail_sent(self):
self.check_visit_ordered("post_mail_sent", [self.visit])
def test_visits_sort_datetime_begin(self):
visit1 = self.visit
visit2 = create_visit(self.study_subject)
visit1.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=1)
visit2.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=2)
visit1.save()
visit2.save()
self.check_visit_ordered("datetime_begin", [visit1, visit2])
def test_visits_sort_datetime_end(self):
visit1 = self.visit
visit2 = create_visit(self.study_subject)
visit1.datetime_end = get_today_midnight_date() + datetime.timedelta(days=1)
visit2.datetime_end = get_today_midnight_date() + datetime.timedelta(days=2)
visit1.save()
visit2.save()
self.check_visit_ordered("datetime_end", [visit1, visit2])
def test_visits_sort_visit_number(self):
visit1 = self.visit
visit2 = create_visit(self.study_subject)
visit2.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=2)
visit2.save()
visit1.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=1)
visit1.save()
# visit_number is adjusted automatically according to start date
self.check_visit_ordered("visit_number", [visit1, visit2])
def test_subjects_filter_unknown(self):
self.check_visit_ordered([["some_unknown", "unknown data"]], [self.visit])
self.check_visit_ordered([["", ""]], [self.visit])
self.check_visit_ordered([["", None]], [self.visit])
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