You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.6 KiB
65 lines
2.6 KiB
from datetime import date, timedelta
|
|
|
|
from django.test import TestCase
|
|
from wagtail.models import Page, Site
|
|
|
|
from core.models import EventIndexPage, EventPage, HomePage
|
|
|
|
|
|
class EventIndexPageTemplateTests(TestCase):
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
default_site = Site.objects.filter(is_default_site=True).first()
|
|
if default_site:
|
|
cls.home_page = default_site.root_page.specific
|
|
default_site.hostname = 'testserver'
|
|
default_site.site_name = 'Test site'
|
|
default_site.save()
|
|
else:
|
|
root_page = Page.get_first_root_node()
|
|
cls.home_page = HomePage(title='Home', slug='home')
|
|
root_page.add_child(instance=cls.home_page)
|
|
cls.home_page.save_revision().publish()
|
|
Site.objects.create(
|
|
hostname='testserver',
|
|
root_page=cls.home_page,
|
|
is_default_site=True,
|
|
site_name='Test site',
|
|
)
|
|
|
|
cls.index_page = EventIndexPage(title='Events', slug='events-overview')
|
|
cls.home_page.add_child(instance=cls.index_page)
|
|
cls.index_page.save_revision().publish()
|
|
|
|
def test_event_index_page_renders_enhanced_timeline_layout(self):
|
|
event_page = EventPage(
|
|
title='Spring Academy',
|
|
slug='spring-academy',
|
|
subtitle='Music and masterclasses',
|
|
start_date=date.today() + timedelta(days=14),
|
|
end_date=date.today() + timedelta(days=16),
|
|
location_name='Konzerthaus',
|
|
location_street='Street 1',
|
|
location_city='10115 Berlin',
|
|
show_in_event_calendar=True,
|
|
is_partner_event=True,
|
|
registration_start_date=date.today(),
|
|
)
|
|
self.index_page.add_child(instance=event_page)
|
|
event_page.save_revision().publish()
|
|
|
|
response = self.client.get(self.index_page.url)
|
|
|
|
self.assertContains(response, 'event-index-timeline')
|
|
self.assertContains(response, 'timeline-page-hero')
|
|
self.assertContains(response, 'event-timeline-card')
|
|
self.assertContains(response, 'event-timeline-placeholder')
|
|
self.assertContains(response, 'Partner Event')
|
|
self.assertContains(response, 'Zur Anmeldung')
|
|
self.assertContains(response, 'Konzerthaus')
|
|
|
|
def test_event_index_page_shows_empty_state_without_events(self):
|
|
response = self.client.get(self.index_page.url)
|
|
|
|
self.assertContains(response, 'timeline-empty-state')
|
|
self.assertContains(response, 'Zurzeit sind keine Veranstaltungen geplant.')
|
|
|