You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.2 KiB
Python
83 lines
3.2 KiB
Python
from http import HTTPStatus
|
|
|
|
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)
|