|
|
|
|
@ -6,8 +6,10 @@ from django.test import TestCase, Client, RequestFactory
|
|
|
|
|
from django.utils import timezone, translation
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.urls import reverse
|
|
|
|
|
from unittest import skip
|
|
|
|
|
from .models import Member, Group, PermissionMember, PermissionGroup, Freizeit, GEMEINSCHAFTS_TOUR, MUSKELKRAFT_ANREISE,\
|
|
|
|
|
MemberNoteList, NewMemberOnList, confirm_mail_by_key, EmergencyContact
|
|
|
|
|
MemberNoteList, NewMemberOnList, confirm_mail_by_key, EmergencyContact,\
|
|
|
|
|
DIVERSE, MALE, FEMALE
|
|
|
|
|
from django.db import connection
|
|
|
|
|
from django.db.migrations.executor import MigrationExecutor
|
|
|
|
|
|
|
|
|
|
@ -18,7 +20,7 @@ def create_custom_user(username, groups, prename, lastname):
|
|
|
|
|
user = User.objects.create_user(
|
|
|
|
|
username=username, password='secret'
|
|
|
|
|
)
|
|
|
|
|
member = Member.objects.create(prename=prename, lastname=lastname, birth_date=timezone.localdate(), email=settings.TEST_MAIL)
|
|
|
|
|
member = Member.objects.create(prename=prename, lastname=lastname, birth_date=timezone.localdate(), email=settings.TEST_MAIL, gender=DIVERSE)
|
|
|
|
|
member.user = user
|
|
|
|
|
member.save()
|
|
|
|
|
user.is_staff = True
|
|
|
|
|
@ -37,22 +39,22 @@ class BasicMemberTestCase(TestCase):
|
|
|
|
|
self.spiel = Group.objects.create(name="Spielkinder")
|
|
|
|
|
|
|
|
|
|
self.fritz = Member.objects.create(prename="Fritz", lastname="Wulter", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=DIVERSE)
|
|
|
|
|
self.fritz.group.add(self.jl)
|
|
|
|
|
self.fritz.group.add(self.alp)
|
|
|
|
|
self.fritz.save()
|
|
|
|
|
self.lara = Member.objects.create(prename="Lara", lastname="Wallis", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=DIVERSE)
|
|
|
|
|
self.lara.group.add(self.alp)
|
|
|
|
|
self.lara.save()
|
|
|
|
|
self.fridolin = Member.objects.create(prename="Fridolin", lastname="Spargel", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=MALE)
|
|
|
|
|
self.fridolin.group.add(self.alp)
|
|
|
|
|
self.fridolin.group.add(self.spiel)
|
|
|
|
|
self.fridolin.save()
|
|
|
|
|
|
|
|
|
|
self.lise = Member.objects.create(prename="Lise", lastname="Lotte", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=FEMALE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MemberTestCase(BasicMemberTestCase):
|
|
|
|
|
@ -66,11 +68,11 @@ class MemberTestCase(BasicMemberTestCase):
|
|
|
|
|
|
|
|
|
|
self.ja = Group.objects.create(name="Jugendausschuss")
|
|
|
|
|
self.peter = Member.objects.create(prename="Peter", lastname="Keks", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=MALE)
|
|
|
|
|
self.anna = Member.objects.create(prename="Anna", lastname="Keks", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=FEMALE)
|
|
|
|
|
self.lisa = Member.objects.create(prename="Lisa", lastname="Keks", birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=DIVERSE)
|
|
|
|
|
self.peter.group.add(self.ja)
|
|
|
|
|
self.anna.group.add(self.ja)
|
|
|
|
|
self.lisa.group.add(self.ja)
|
|
|
|
|
@ -128,7 +130,7 @@ class PDFTestCase(TestCase):
|
|
|
|
|
|
|
|
|
|
for i in range(7):
|
|
|
|
|
m = Member.objects.create(prename='Lise {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=FEMALE)
|
|
|
|
|
NewMemberOnList.objects.create(member=m, comments='a' * i, memberlist=self.ex)
|
|
|
|
|
NewMemberOnList.objects.create(member=m, comments='a' * i, memberlist=self.note)
|
|
|
|
|
|
|
|
|
|
@ -158,6 +160,13 @@ class PDFTestCase(TestCase):
|
|
|
|
|
self._test_pdf('notes_list')
|
|
|
|
|
self._test_pdf('notes_list', username='standard', invalid=True)
|
|
|
|
|
|
|
|
|
|
def test_sjr_application(self):
|
|
|
|
|
self._test_pdf('sjr_application')
|
|
|
|
|
self._test_pdf('sjr_application', username='standard', invalid=True)
|
|
|
|
|
|
|
|
|
|
# TODO: Since generating a seminar report requires more input now, this test rightly
|
|
|
|
|
# fails. Replace this test with one that fills the POST form and generates a pdf.
|
|
|
|
|
@skip("Currently rightly fails, because expected behaviour changed.")
|
|
|
|
|
def test_seminar_report(self):
|
|
|
|
|
self._test_pdf('seminar_report')
|
|
|
|
|
self._test_pdf('seminar_report', username='standard', invalid=True)
|
|
|
|
|
@ -200,21 +209,21 @@ class AdminTestCase(TestCase):
|
|
|
|
|
|
|
|
|
|
for i in range(3):
|
|
|
|
|
m = Member.objects.create(prename='Fritz {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=MALE)
|
|
|
|
|
m.group.add(cool_kids)
|
|
|
|
|
m.save()
|
|
|
|
|
for i in range(7):
|
|
|
|
|
m = Member.objects.create(prename='Lise {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=FEMALE)
|
|
|
|
|
m.group.add(super_kids)
|
|
|
|
|
m.save()
|
|
|
|
|
for i in range(5):
|
|
|
|
|
m = Member.objects.create(prename='Lulla {}'.format(i), lastname='Hulla', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=DIVERSE)
|
|
|
|
|
m.group.add(staff)
|
|
|
|
|
m.save()
|
|
|
|
|
m = Member.objects.create(prename='Peter', lastname='Hulla', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=MALE)
|
|
|
|
|
m.group.add(staff)
|
|
|
|
|
p1.list_members.add(m)
|
|
|
|
|
|
|
|
|
|
@ -256,7 +265,7 @@ class MemberAdminTestCase(AdminTestCase):
|
|
|
|
|
|
|
|
|
|
for i in range(1):
|
|
|
|
|
m = Member.objects.create(prename='Peter {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=MALE)
|
|
|
|
|
m.group.add(mega_kids)
|
|
|
|
|
m.save()
|
|
|
|
|
|
|
|
|
|
@ -383,7 +392,7 @@ class FreizeitAdminTestCase(AdminTestCase):
|
|
|
|
|
|
|
|
|
|
for i in range(7):
|
|
|
|
|
m = Member.objects.create(prename='Lise {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
email=settings.TEST_MAIL, gender=FEMALE)
|
|
|
|
|
NewMemberOnList.objects.create(member=m, comments='a' * i, memberlist=ex)
|
|
|
|
|
|
|
|
|
|
def test_changelist(self):
|
|
|
|
|
@ -413,11 +422,17 @@ class FreizeitAdminTestCase(AdminTestCase):
|
|
|
|
|
response = c.get(url)
|
|
|
|
|
self.assertEqual(response.status_code, 200, 'Response code is not 200.')
|
|
|
|
|
|
|
|
|
|
@skip("The filtering is currently (intentionally) disabled.")
|
|
|
|
|
def test_add_queryset_filter(self):
|
|
|
|
|
"""Test if queryset on `jugendleiter` field is properly filtered by permissions."""
|
|
|
|
|
u = User.objects.get(username='standard')
|
|
|
|
|
c = self._login('standard')
|
|
|
|
|
|
|
|
|
|
url = reverse('admin:members_freizeit_add')
|
|
|
|
|
|
|
|
|
|
request = self.factory.get(url)
|
|
|
|
|
request.user = u
|
|
|
|
|
#staff = Group.objects.get(name='Jugendleiter')
|
|
|
|
|
|
|
|
|
|
field = Freizeit._meta.get_field('jugendleiter')
|
|
|
|
|
queryset = self.admin.formfield_for_manytomany(field, request).queryset
|
|
|
|
|
self.assertQuerysetEqual(queryset, u.member.filter_queryset_by_permissions(model=Member),
|
|
|
|
|
@ -472,6 +487,7 @@ class MailConfirmationTestCase(BasicMemberTestCase):
|
|
|
|
|
# father's mail should now be confirmed
|
|
|
|
|
self.assertTrue(self.father.confirmed_mail, msg='After confirming by key, the mail should be confirmed.')
|
|
|
|
|
|
|
|
|
|
@skip("Currently, emergency contact email addresses are not required to be confirmed.")
|
|
|
|
|
def test_emergency_contact_confirmation(self):
|
|
|
|
|
# request mail confirmation of fritz, should also ask for confirmation of father
|
|
|
|
|
requested_confirmation = self.fritz.request_mail_confirmation()
|
|
|
|
|
|