diff --git a/smash/web/tests/view/test_visit.py b/smash/web/tests/view/test_visit.py index 8925d6d8fa8b0be13fba8098c288027c02b071b9..5f430b4b07f5a09915c4f42a66c3b29667accd80 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 2dd081106633856fa109d72fdb9db7f7ee57a2d6..253270a4afe020cb5efaaccbc9654a4c1882f4b6 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')