ludwigsburgalpin/tests: add tests for views and admin

pull/104/head
Christian Merten 11 months ago
parent 593cef520d
commit 05cb501942
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -39,8 +39,8 @@ fi
cd jdav_web cd jdav_web
if [[ "$DJANGO_TEST_KEEPDB" == 1 ]]; then if [[ "$DJANGO_TEST_KEEPDB" == 1 ]]; then
coverage run manage.py test startpage finance members contrib logindata mailer material -v 2 --noinput --keepdb coverage run manage.py test startpage finance members contrib logindata mailer material ludwigsburgalpin -v 2 --noinput --keepdb
else else
coverage run manage.py test startpage finance members contrib logindata mailer material -v 2 --noinput coverage run manage.py test startpage finance members contrib logindata mailer material ludwigsburgalpin -v 2 --noinput
fi fi
coverage html coverage html

@ -1,3 +1,82 @@
from django.test import TestCase from http import HTTPStatus
# Create your tests here. from django.test import TestCase, RequestFactory
from django.utils import timezone
from django.contrib.admin.sites import AdminSite
from django.urls import reverse
from django.conf import settings
from .models import Termin, GRUPPE, KATEGORIE, KONDITION, TECHNIK, SAISON,\
EVENTART, KLASSIFIZIERUNG
from .admin import TerminAdmin
class BasicTerminTestCase(TestCase):
TERMIN_NO = 10
def setUp(self):
for i in range(BasicTerminTestCase.TERMIN_NO):
Termin.objects.create(title='Foo {}'.format(i),
start_date=timezone.now().date(),
end_date=timezone.now().date(),
group=GRUPPE[0][0],
email=settings.TEST_MAIL,
category=KATEGORIE[0][0],
technik=TECHNIK[0][0],
max_participants=42,
anforderung_hoehe=10)
class TerminAdminTestCase(BasicTerminTestCase):
def test_str(self):
t = Termin.objects.all()[0]
self.assertEqual(str(t), '{} {}'.format(t.title, str(t.group)))
def test_make_overview(self):
factory = RequestFactory()
admin = TerminAdmin(Termin, AdminSite())
url = reverse('admin:ludwigsburgalpin_termin_changelist')
request = factory.get(url)
response = admin.make_overview(request, Termin.objects.all())
self.assertEqual(response['Content-Type'], 'application/xlsx',
'The content-type of the generated overview should be an .xlsx file.')
class ViewTestCase(BasicTerminTestCase):
def test_get_index(self):
url = reverse('ludwigsburgalpin:index')
response = self.client.get(url)
self.assertEqual(response.status_code, HTTPStatus.OK)
def test_submit_termin(self):
url = reverse('ludwigsburgalpin:index')
response = self.client.post(url, data={
'title': 'My Title',
'subtitle': 'My Subtitle',
'start_date': '2024-01-01',
'end_date': '2024-02-01',
'group': GRUPPE[0][0],
'category': KATEGORIE[0][0],
'condition': KONDITION[0][0],
'technik': TECHNIK[0][0],
'saison': SAISON[0][0],
'eventart': EVENTART[0][0],
'klassifizierung': KLASSIFIZIERUNG[0][0],
'anforderung_hoehe': 10,
'anforderung_strecke': 10,
'anforderung_dauer': 10,
'max_participants': 100,
})
t = Termin.objects.get(title='My Title')
self.assertEqual(t.group, GRUPPE[0][0])
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, "Termin erfolgreich eingereicht", html=True)
def test_submit_termin_invalid(self):
url = reverse('ludwigsburgalpin:index')
# many required fields are missing
response = self.client.post(url, data={
'title': 'My Title',
})
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertContains(response, "Dieses Feld ist zwingend erforderlich.", html=True)

Loading…
Cancel
Save