From 8e1a7cddfe0ffae828f78d3bece22a053dcca356 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 23 Mar 2017 16:23:35 +0100
Subject: [PATCH] approaching visits without appointments are sorted by start
 date

---
 smash/web/tests/test_view_notifications.py | 35 +++++++++++++++++++---
 smash/web/views/notifications.py           |  2 +-
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/smash/web/tests/test_view_notifications.py b/smash/web/tests/test_view_notifications.py
index cf193787..748414e9 100644
--- a/smash/web/tests/test_view_notifications.py
+++ b/smash/web/tests/test_view_notifications.py
@@ -7,11 +7,16 @@ from functions import create_appointment, create_location, create_worker, create
 from functions import create_subject
 from functions import create_visit
 from web.models import Appointment, Location
-from web.views.notifications import get_exceeded_visit_notifications_count, \
+from web.views.notifications import \
+    get_approaching_visits_for_mail_contact_count, \
+    get_approaching_visits_without_appointments, \
     get_approaching_visits_without_appointments_count, \
-    get_subject_with_no_visit_notifications_count, get_unfinished_appointments_count, \
-    get_approaching_visits_for_mail_contact_count, get_subjects_with_reminder_count, \
-    get_visits_without_appointments_count, get_today_midnight_date
+    get_exceeded_visit_notifications_count, \
+    get_subject_with_no_visit_notifications_count, \
+    get_subjects_with_reminder_count, \
+    get_visits_without_appointments_count, \
+    get_today_midnight_date, \
+    get_unfinished_appointments_count
 
 
 class NotificationViewTests(TestCase):
@@ -112,6 +117,28 @@ class NotificationViewTests(TestCase):
         notification = get_approaching_visits_without_appointments_count(self.user)
         self.assertEquals(original_notification.count + 1, notification.count)
 
+    def test_get_approaching_visits_without_appointments_order(self):
+        subject = create_subject()
+
+        visit = create_visit(subject)
+        visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=10)
+        visit.save()
+
+        visit = create_visit(subject)
+        visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=8)
+        visit.save()
+
+        visit = create_visit(subject)
+        visit.datetime_begin = get_today_midnight_date() + datetime.timedelta(days=12)
+        visit.save()
+
+        visits = get_approaching_visits_without_appointments(self.user)
+        self.assertEquals(3, visits.count())
+
+        # check sort order
+        self.assertTrue(visits[0].datetime_begin < visits[1].datetime_begin)
+        self.assertTrue(visits[1].datetime_begin < visits[2].datetime_begin)
+
     def test_get_subject_with_no_visit_notifications_count(self):
         original_notification = get_subject_with_no_visit_notifications_count(self.user)
         create_subject()
diff --git a/smash/web/views/notifications.py b/smash/web/views/notifications.py
index b3b5d5ae..6f22dc9d 100644
--- a/smash/web/views/notifications.py
+++ b/smash/web/views/notifications.py
@@ -163,7 +163,7 @@ def get_approaching_visits_without_appointments(user):
         datetime_begin__lt=today_plus_two_months,
         is_finished=False,
         subject__default_location__in=get_filter_locations(user),
-        my_count=0)
+        my_count=0).order_by('datetime_begin')
 
 
 def get_approaching_visits_for_mail_contact(user):
-- 
GitLab