|
|
|
|
@ -1,10 +1,23 @@
|
|
|
|
|
from django.test import TestCase
|
|
|
|
|
from django.utils import timezone
|
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
|
from django.test import TestCase, Client
|
|
|
|
|
from django.utils import timezone, translation
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from .models import Member, Group, PermissionMember, PermissionGroup
|
|
|
|
|
from django.urls import reverse
|
|
|
|
|
from .models import Member, Group, PermissionMember, PermissionGroup, Freizeit, GEMEINSCHAFTS_TOUR, MUSKELKRAFT_ANREISE
|
|
|
|
|
from django.db import connection
|
|
|
|
|
from django.db.migrations.executor import MigrationExecutor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create your tests here.
|
|
|
|
|
class Migrator:
|
|
|
|
|
def __init__(self, connection=connection):
|
|
|
|
|
self.executor = MigrationExecutor(connection)
|
|
|
|
|
|
|
|
|
|
def migrate(self, app_label: str, migration: str):
|
|
|
|
|
target = [(app_label, migration)]
|
|
|
|
|
self.executor.loader.build_graph()
|
|
|
|
|
self.executor.migrate(target)
|
|
|
|
|
self.apps = self.executor.loader.project_state(target).apps
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MemberTestCase(TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
@ -87,3 +100,74 @@ class MemberTestCase(TestCase):
|
|
|
|
|
s1 = set(member.filter_queryset_by_permissions(model=Member))
|
|
|
|
|
s2 = set(other for other in Member.objects.all() if member.may_list(other))
|
|
|
|
|
self.assertEqual(s1, s2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PDFTestCase(TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
self.ex = Freizeit.objects.create(name='Wild trip', kilometers_traveled=120,
|
|
|
|
|
tour_type=GEMEINSCHAFTS_TOUR,
|
|
|
|
|
tour_approach=MUSKELKRAFT_ANREISE,
|
|
|
|
|
difficulty=1)
|
|
|
|
|
|
|
|
|
|
User.objects.create_superuser(
|
|
|
|
|
username='superuser', password='secret'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def _test_pdf(self, name, invalid=False):
|
|
|
|
|
c = Client()
|
|
|
|
|
c.login(username='superuser', password='secret')
|
|
|
|
|
|
|
|
|
|
url = reverse('admin:members_freizeit_action', args=(self.ex.pk,))
|
|
|
|
|
response = c.post(url, {name: 'hoho'})
|
|
|
|
|
if not invalid:
|
|
|
|
|
self.assertEqual(response.status_code, 200, 'Response code is not 200.')
|
|
|
|
|
self.assertEqual(response.headers['Content-Type'], 'application/pdf', 'Response content type is not pdf.')
|
|
|
|
|
else:
|
|
|
|
|
self.assertEqual(response.status_code, 302, 'Response code is not 302.')
|
|
|
|
|
|
|
|
|
|
def test_crisis_intervention_list(self):
|
|
|
|
|
return self._test_pdf('crisis_intervention_list')
|
|
|
|
|
|
|
|
|
|
def test_notes_list(self):
|
|
|
|
|
return self._test_pdf('notes_list')
|
|
|
|
|
|
|
|
|
|
def test_seminar_report(self):
|
|
|
|
|
return self._test_pdf('seminar_report')
|
|
|
|
|
|
|
|
|
|
def test_wrong_action(self):
|
|
|
|
|
return self._test_pdf('asdf', invalid=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MemberAdminTestCase(TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
User.objects.create_superuser(
|
|
|
|
|
username='superuser', password='secret'
|
|
|
|
|
)
|
|
|
|
|
for i in range(100):
|
|
|
|
|
self.m = Member.objects.create(prename='Fritz {}'.format(i), lastname='Walter', birth_date=timezone.now().date(),
|
|
|
|
|
email=settings.TEST_MAIL)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _login(self, name):
|
|
|
|
|
c = Client()
|
|
|
|
|
c.login(username=name, password='secret')
|
|
|
|
|
return c
|
|
|
|
|
|
|
|
|
|
def test_changelist(self):
|
|
|
|
|
c = self._login('superuser')
|
|
|
|
|
|
|
|
|
|
url = reverse('admin:members_member_changelist')
|
|
|
|
|
response = c.get(url)
|
|
|
|
|
self.assertEqual(response.status_code, 200, 'Response code is not 200.')
|
|
|
|
|
|
|
|
|
|
def test_change(self):
|
|
|
|
|
c = self._login('superuser')
|
|
|
|
|
|
|
|
|
|
url = reverse('admin:members_member_change', args=(self.m.pk,))
|
|
|
|
|
response = c.get(url)
|
|
|
|
|
self.assertEqual(response.status_code, 200, 'Response code is not 200.')
|
|
|
|
|
|
|
|
|
|
# if member does not exist, expect redirect
|
|
|
|
|
url = reverse('admin:members_member_change', args=(71233,))
|
|
|
|
|
response = c.get(url)
|
|
|
|
|
self.assertEqual(response.status_code, 302, 'Response code is not 302.')
|
|
|
|
|
|