From 7b81782d193ee908775d03357146e0d7971c1be3 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 29 Nov 2017 12:27:15 +0100
Subject: [PATCH] unit test for checking if mail template info is rendered on
 visit page

---
 smash/web/tests/view/test_visit.py | 36 +++++++++++++++++++++++++-----
 smash/web/views/visit.py           |  4 ++++
 2 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/smash/web/tests/view/test_visit.py b/smash/web/tests/view/test_visit.py
index 8925d6d8..5f430b4b 100644
--- a/smash/web/tests/view/test_visit.py
+++ b/smash/web/tests/view/test_visit.py
@@ -4,9 +4,11 @@ import logging
 from django.urls import reverse
 
 from web.forms import VisitDetailForm, VisitAddForm
-from web.models import Visit
+from web.models import Visit, MailTemplate
+from web.models.constants import MAIL_TEMPLATE_CONTEXT_VISIT
 from web.tests import LoggedInTestCase
-from web.tests.functions import create_study_subject, create_visit, create_appointment, create_appointment_type
+from web.tests.functions import create_study_subject, create_visit, create_appointment, create_appointment_type, \
+    create_language, get_resource_path
 from web.views.notifications import get_today_midnight_date
 
 logger = logging.getLogger(__name__)
@@ -30,19 +32,41 @@ class VisitViewTests(LoggedInTestCase):
         visit = create_visit()
         create_appointment(visit)
 
-        form_appointment = VisitDetailForm(instance=visit)
+        form_data = self.create_visit_detail_form_data(visit)
+
+        response = self.client.post(reverse('web.views.visit_details', kwargs={'id': visit.id}), data=form_data)
+        self.assertEqual(response.status_code, 200)
+        self.assertNotContains(response, "error")
+
+    @staticmethod
+    def create_visit_detail_form_data(visit):
+        visit_detail_form = VisitDetailForm(instance=visit)
         form_data = {}
-        for key, value in form_appointment.initial.items():
+        for key, value in visit_detail_form.initial.items():
             if value is not None:
                 if isinstance(value, datetime.datetime):
                     form_data[key] = value.strftime("%Y-%m-%d")
                 else:
                     form_data[key] = value
+        return form_data
+
+    def test_render_visit_details_with_mail_templates(self):
+        language = create_language(name="German")
+        template_name = "german_template"
+        template_file = get_resource_path('upcoming_appointment_FR.docx')
+        visit = create_visit()
+        visit.subject.subject.default_written_communication_language = language
+        visit.subject.subject.save()
+
+        MailTemplate(name=template_name, language=language, context=MAIL_TEMPLATE_CONTEXT_VISIT,
+                     template_file=template_file).save()
+
+        form_data = self.create_visit_detail_form_data(visit)
 
-        response = self.client.post(
-            reverse('web.views.visit_details', kwargs={'id': visit.id}), data=form_data)
+        response = self.client.post(reverse('web.views.visit_details', kwargs={'id': visit.id}), data=form_data)
         self.assertEqual(response.status_code, 200)
         self.assertNotContains(response, "error")
+        self.assertTrue(template_name in response.content)
 
     def test_render_add_visit(self):
         study_subject = create_study_subject()
diff --git a/smash/web/views/visit.py b/smash/web/views/visit.py
index 2dd08110..253270a4 100644
--- a/smash/web/views/visit.py
+++ b/smash/web/views/visit.py
@@ -1,4 +1,6 @@
 # coding=utf-8
+import logging
+
 from django.shortcuts import get_object_or_404, redirect
 
 from notifications import get_active_visits_with_missing_appointments, get_unfinished_visits, \
@@ -8,6 +10,8 @@ from . import wrap_response
 from ..forms import VisitDetailForm, StudySubjectDetailForm, VisitAddForm, SubjectDetailForm
 from ..models import Visit, Appointment, StudySubject, MailTemplate
 
+logger = logging.getLogger(__name__)
+
 
 def visits(request):
     visit_list = Visit.objects.order_by('-datetime_begin')
-- 
GitLab