# -*- coding: utf-8 -*- from __future__ import unicode_literals from babel.dates import format_datetime from django.apps import apps from django.core import mail as django_mail from django.test import TestCase from django.utils.translation import get_language from dav_base.tests.generic import EmailTestMixin from dav_events.tests.generic import EventMixin from .generic import RegistrationMixin MAIL_SELF_TEMPLATE = """Hallo {participant_full_name}, wir haben deine Anmeldung zur Veranstaltung {event_number} - {event_title} an den/die Tourenleiter/in {trainer_full_name} weitergegeben. {trainer_first_name} wird sich bei dir melden und dir mitteilen, ob du teilnehmen kannst oder nicht. ======================================================================== Veranstaltung: {event_number} - {event_title} Datum: {event_formated_date} Tourenleitung: {trainer_full_name} Anmeldezeitpunkt: {registration_at} Referenz-Nr: {registration_id} Personendaten ------------- {participant_full_name} Telefon: E-Mail: {participant_email} DAV Mitgliedsnummer: Notfall-Kontakt --------------- - Erfahrung --------- - Anmerkung --------- - Erklärung zur Datenspeicherung ------------------------------ - Zeitpunkt der Datenlöschung: {purge_at} """ MAIL_TRAINER_TEMPLATE = """Hallo {trainer_first_name}, Anmeldung zu deiner Veranstaltung {event_number} - {event_title} ======================================================================== Anmeldezeitpunkt: {registration_at} Referenz-Nr: {registration_id} Teilnehmer*in: {participant_full_name} , {participant_email} Notfall-Kontakt: - Erfahrung: - Anmerkung: - ------------------------------ Erklärung zur Datenspeicherung ------------------------------ - Zeitpunkt der Datenlöschung: {purge_at} """ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase): def setUp(self): super(EmailsTestCase, self).setUp() app_config = apps.get_app_config('dav_events') app_config.settings.enable_email_on_status_update = False self.event = self.create_event() self.submit_event(self.event) self.accept_event(self.event) self.confirm_publication_event(self.event) def test_email_self(self): event = self.event trainer = event.owner registration_data = { 'event': event, 'personal_names': 'Participant', 'family_names': 'One', 'email_address': 'participant@localhost', } registration = self.create_registration(registration_data) recipient = '"{full_name}" <{email}>'.format(full_name=registration.get_full_name(), email=registration.email_address) reply_to = '"{full_name}" <{email}>'.format(full_name=trainer.get_full_name(), email=trainer.email) mail = django_mail.outbox[1] self.assertRecipients(mail, [recipient]) self.assertReplyTo(mail, [reply_to]) subject = '{number}: Deine Anmeldung'.format(number=event.get_number()) self.assertSubject(mail, subject) locale = get_language()[0:2] body = MAIL_SELF_TEMPLATE.format( participant_full_name=registration.get_full_name(), participant_email=registration.email_address, event_number=event.get_number(), event_title=event.title, event_formated_date=event.get_formated_date(), trainer_full_name=trainer.get_full_name(), trainer_first_name=trainer.first_name, registration_id=registration.id, registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, HH:mm', locale=locale), purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale), ) self.assertBody(mail, body) def test_email_trainer(self): event = self.event trainer = event.owner registration_data = { 'event': event, 'personal_names': 'Participant', 'family_names': 'One', 'email_address': 'participant@localhost', } registration = self.create_registration(registration_data) reply_to = '"{full_name}" <{email}>'.format(full_name=registration.get_full_name(), email=registration.email_address) recipient = '"{full_name}" <{email}>'.format(full_name=trainer.get_full_name(), email=trainer.email) mail = django_mail.outbox[0] self.assertRecipients(mail, [recipient]) self.assertReplyTo(mail, [reply_to]) subject = '{number}: Anmeldung {full_name}'.format(number=event.get_number(), full_name=registration.get_full_name()) self.assertSubject(mail, subject) locale = get_language()[0:2] body = MAIL_TRAINER_TEMPLATE.format( participant_full_name=registration.get_full_name(), participant_email=registration.email_address, event_number=event.get_number(), event_title=event.title, event_formated_date=event.get_formated_date(), trainer_first_name=trainer.first_name, registration_id=registration.id, registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, HH:mm', locale=locale), purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale), ) self.assertBody(mail, body)