members/tests: add admin and pdf testcases

jenkins
Christian Merten 3 years ago
parent 565e7f3e8c
commit 4eed3f7907
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -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.')

Loading…
Cancel
Save