Skip to content
Snippets Groups Projects

Resolve "exceeded visits list & unfinished visits list"

Merged Piotr Gawron requested to merge 146-exceeded-visits-list-unfinished-visits-list into master
1 file
+ 100
1
Compare changes
  • Side-by-side
  • Inline
# coding=utf-8
# coding=utf-8
 
import datetime
import json
import json
import logging
import logging
from django.urls import reverse
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, \
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_MISSING_APPOINTMENTS, VISIT_LIST_APPROACHING_WITHOUT_APPOINTMENTS, \
VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT
VISIT_LIST_APPROACHING_FOR_MAIL_CONTACT
from web.tests import LoggedInWithWorkerTestCase
from web.tests import LoggedInWithWorkerTestCase
from web.tests.functions import create_study_subject, create_get_suffix, create_visit
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__)
logger = logging.getLogger(__name__)
@@ -17,6 +21,7 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
@@ -17,6 +21,7 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
def setUp(self):
def setUp(self):
super(TestVisitApi, self).setUp()
super(TestVisitApi, self).setUp()
self.study_subject = create_study_subject()
self.study_subject = create_study_subject()
 
self.visit = create_visit(self.study_subject)
def test_get_columns(self):
def test_get_columns(self):
response = self.client.get(reverse('web.api.visits.columns', kwargs={'visit_list_type': VISIT_LIST_GENERIC}))
response = self.client.get(reverse('web.api.visits.columns', kwargs={'visit_list_type': VISIT_LIST_GENERIC}))
@@ -26,7 +31,8 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
@@ -26,7 +31,8 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
self.assertTrue(len(columns) > 0)
self.assertTrue(len(columns) > 0)
def test_get_columns_for_time_exceeded(self):
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)
self.assertEqual(response.status_code, 200)
columns = json.loads(response.content)['columns']
columns = json.loads(response.content)['columns']
@@ -81,3 +87,96 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
@@ -81,3 +87,96 @@ class TestVisitApi(LoggedInWithWorkerTestCase):
response = self.client.get(url)
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.status_code, 200)
self.assertTrue(name in response.content)
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])
Loading