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