From 4eed3f79078ffd4124dae1fc114a567ef20f8c46 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Tue, 4 Apr 2023 23:51:51 +0200 Subject: [PATCH] members/tests: add admin and pdf testcases --- jdav_web/members/tests.py | 92 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 4 deletions(-) diff --git a/jdav_web/members/tests.py b/jdav_web/members/tests.py index 4aea374..7f04666 100644 --- a/jdav_web/members/tests.py +++ b/jdav_web/members/tests.py @@ -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.')