+
{% bootstrap_field form.dav_number %}
+
+ Nichtmitglieder
+ {% bootstrap_field form.not_dav_member %}
+
{% bootstrap_field form.emergency_contact %}
diff --git a/dav_registration/tests/generic.py b/dav_registration/tests/generic.py
index 30ebf6f..499023b 100644
--- a/dav_registration/tests/generic.py
+++ b/dav_registration/tests/generic.py
@@ -1,5 +1,8 @@
+from django.utils import timezone
from ..models import Registration
+THIS_YEAR = timezone.now().year
+
class RegistrationMixin(object):
def create_registration(self, data):
diff --git a/dav_registration/tests/test_emails.py b/dav_registration/tests/test_emails.py
index 75012f3..1c6547b 100644
--- a/dav_registration/tests/test_emails.py
+++ b/dav_registration/tests/test_emails.py
@@ -10,7 +10,7 @@ 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
+from .generic import THIS_YEAR, RegistrationMixin
MAIL_SELF_TEMPLATE = """Hallo {participant_full_name},
@@ -32,11 +32,13 @@ Vorgang: {registration_hexstr} (wird nur gebraucht, wenn irgendwas schief geht)
Personendaten
-------------
{participant_full_name}
-
-
-Telefon:
+Here
+1 Karlsruhe
+Telefon: 12
E-Mail: {participant_email}
-DAV Mitgliedsnummer:
+Jahrgang: {year_of_birth}
+Antrag auf reduzierte Teilnahmegebühr: {apply_reduced_fee_yesno}
+DAV Mitgliedsnummer: 0
Notfall-Kontakt
---------------
@@ -66,10 +68,11 @@ Vorgang: {registration_hexstr}
Teilnehmer*in:
{participant_full_name}
-,
-
+Here, 1 Karlsruhe
+12
{participant_email}
-
+0
+Antrag auf reduzierte Teilnahmegebühr: {apply_reduced_fee_yesno}
Notfall-Kontakt:
-
@@ -77,6 +80,8 @@ Notfall-Kontakt:
Erfahrung:
-
+Jahrgang: {year_of_birth} (ungefähres Alter: {approx_age})
+
Anmerkung:
-
@@ -107,7 +112,13 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
'event': event,
'personal_names': 'Participant',
'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR - 10,
+ 'dav_number': '0',
}
registration = self.create_registration(registration_data)
@@ -126,6 +137,8 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
body = MAIL_SELF_TEMPLATE.format(
participant_full_name=registration.get_full_name(),
participant_email=registration.email_address,
+ year_of_birth=registration.year_of_birth,
+ apply_reduced_fee_yesno='Nein',
event_number=event.get_number(),
event_title=event.title,
event_formated_date=event.get_formated_date(),
@@ -150,6 +163,9 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
'postal_code': '76131',
'city': 'Karlsruhe',
'phone_number': '+49 721 1234567890 AB (Büro)',
+ 'year_of_birth': 1976,
+ 'apply_reduced_fee': True,
+ 'dav_member': False,
'dav_number': '131/00/007*12345',
'emergency_contact': 'Call 911!',
'experience': 'Yes, we can!',
@@ -167,7 +183,9 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
search += '{} {}\n'.format(registration_data['postal_code'], registration_data['city'])
search += 'Telefon: {}\n'.format(registration_data['phone_number'])
search += 'E-Mail: {}\n'.format(registration_data['email_address'])
- search += 'DAV Mitgliedsnummer: {}\n'.format(registration_data['dav_number'])
+ search += 'Jahrgang: {}\n'.format(registration_data['year_of_birth'])
+ search += 'Antrag auf reduzierte Teilnahmegebühr: Ja\n'
+ search += 'DAV Mitglied: Nein\n'
self.assertIn(search, mail.body)
search = '\n'
@@ -204,7 +222,13 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
'event': event,
'personal_names': 'Participant',
'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR - 86,
+ 'dav_number': '0',
}
registration = self.create_registration(registration_data)
@@ -224,6 +248,9 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
body = MAIL_TRAINER_TEMPLATE.format(
participant_full_name=registration.get_full_name(),
participant_email=registration.email_address,
+ year_of_birth=registration.year_of_birth,
+ approx_age=registration.approx_age(),
+ apply_reduced_fee_yesno='Nein',
event_number=event.get_number(),
event_title=event.title,
event_formated_date=event.get_formated_date(),
@@ -247,6 +274,9 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
'postal_code': '76131',
'city': 'Karlsruhe',
'phone_number': '+49 721 1234567890 AB (Büro)',
+ 'year_of_birth': THIS_YEAR,
+ 'apply_reduced_fee': True,
+ 'dav_member': False,
'dav_number': '131/00/007*12345',
'emergency_contact': 'Call 911!',
'experience': 'Yes, we can!',
@@ -265,8 +295,8 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
search += '\n'
search += registration_data['email_address']
search += '\n'
- search += registration_data['dav_number']
- search += '\n'
+ search += 'Nicht DAV Mitglied\n'
+ search += 'Antrag auf reduzierte Teilnahmegebühr: Ja\n'
self.assertIn(search, mail.body)
search = '\n'
@@ -281,6 +311,12 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
search += '\n'
self.assertIn(search, mail.body)
+ search = '\n'
+ search += 'Jahrgang: '
+ search += str(registration_data['year_of_birth'])
+ search += ' (ungefähres Alter: 0)\n'
+ self.assertIn(search, mail.body)
+
search = '\n'
search += 'Anmerkung:\n'
search += registration_data['note']
diff --git a/dav_registration/tests/test_models.py b/dav_registration/tests/test_models.py
new file mode 100644
index 0000000..0644611
--- /dev/null
+++ b/dav_registration/tests/test_models.py
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+from django.apps import apps
+from django.core.exceptions import ValidationError
+from django.test import TestCase
+
+from dav_events.tests.generic import EventMixin
+
+from .generic import THIS_YEAR, RegistrationMixin
+
+
+class RegistrationTestCase(EventMixin, RegistrationMixin, TestCase):
+ def setUp(self):
+ super(RegistrationTestCase, self).setUp()
+
+ app_config = apps.get_app_config('dav_events')
+ app_config.settings.enable_email_on_status_update = False
+
+ self.event = self.create_event_by_model()
+ self.submit_event(self.event)
+ self.accept_event(self.event)
+ self.confirm_publication_event(self.event)
+
+ def test_create_members(self):
+ event = self.event
+ registration_data = {
+ 'event': event,
+ 'personal_names': 'Participant',
+ 'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
+ 'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR,
+ }
+ dav_numbers = ['0', '12345', '131/00/12345']
+ for n in dav_numbers:
+ d = registration_data
+ d['dav_number'] = n
+ self.create_registration(d)
+
+ def test_create_members_without_number(self):
+ event = self.event
+ registration_data = {
+ 'event': event,
+ 'personal_names': 'Participant',
+ 'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
+ 'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR,
+ }
+ with self.assertRaisesMessage(ValidationError,
+ 'Wenn du DAV Mitglied bist, brauchen wir deine Mitgliedsnummer.'):
+ self.create_registration(registration_data)
+
+ registration_data['dav_number'] = ''
+ with self.assertRaisesMessage(ValidationError,
+ 'Wenn du DAV Mitglied bist, brauchen wir deine Mitgliedsnummer.'):
+ self.create_registration(registration_data)
+
+ def test_create_members_with_invalid_numbers(self):
+ event = self.event
+ registration_data = {
+ 'event': event,
+ 'personal_names': 'Participant',
+ 'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
+ 'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR,
+ }
+ dav_numbers = ['Nein', '-', '13100123456789']
+ for n in dav_numbers:
+ d = registration_data
+ d['dav_number'] = n
+
+ with self.assertRaises(ValidationError) as context:
+ self.create_registration(d)
+
+ self.assertEqual(context.exception.messages, ['Ungültiges Format.'])
+
+ def test_create_non_member(self):
+ event = self.event
+ registration_data = {
+ 'event': event,
+ 'personal_names': 'Participant',
+ 'family_names': 'One',
+ 'address': 'Here',
+ 'postal_code': '1',
+ 'city': 'Karlsruhe',
+ 'phone_number': '12',
+ 'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR,
+ 'dav_member': False,
+ }
+ self.create_registration(registration_data)
+
diff --git a/dav_registration/tests/test_utils.py b/dav_registration/tests/test_utils.py
index 81ff5d4..0dd3994 100644
--- a/dav_registration/tests/test_utils.py
+++ b/dav_registration/tests/test_utils.py
@@ -9,7 +9,7 @@ from dav_events.tests.generic import EventMixin
from ..models import Registration
from ..utils import purge_registrations
-from .generic import RegistrationMixin
+from .generic import THIS_YEAR, RegistrationMixin
class UtilsTestCase(RegistrationMixin, EventMixin, TestCase):
@@ -29,6 +29,17 @@ class UtilsTestCase(RegistrationMixin, EventMixin, TestCase):
'trainer_familyname': 'One',
'trainer_email': 'trainer@localhost',
}
+ registration_data = {
+ 'personal_names': 'Participant',
+ 'family_names': 'P.',
+ 'address': 'Am Fächerbad 2',
+ 'postal_code': '76131',
+ 'city': 'Karlsruhe',
+ 'phone_number': '555 5555',
+ 'email_address': 'participant@localhost',
+ 'year_of_birth': THIS_YEAR - 44,
+ 'dav_number': '1',
+ }
first_day = today - (one_day * 367)
while first_day < today:
@@ -41,7 +52,9 @@ class UtilsTestCase(RegistrationMixin, EventMixin, TestCase):
self.accept_event(event)
for i in range(0, registrations_per_event):
- self.create_registration({'event': event})
+ d = registration_data
+ d['event'] = event
+ self.create_registration(d)
purge_registrations()