dnscms: improve events listing view
This commit is contained in:
@@ -4,6 +4,7 @@ import pytest
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils import timezone
|
||||
|
||||
from events.admin import EventDateColumn, OrganizersColumn
|
||||
from events.models import (
|
||||
EventCategory,
|
||||
EventOccurrence,
|
||||
@@ -212,6 +213,62 @@ def test_graphql_event_index_future_events_ordered_by_next_occurrence(event_inde
|
||||
assert titles.index("Sooner gig") < titles.index("Later gig")
|
||||
|
||||
|
||||
def test_event_date_column_no_occurrences(event_index):
|
||||
event = EventPageFactory(parent=event_index)
|
||||
column = EventDateColumn("event_date")
|
||||
|
||||
assert column.get_value(event) == "—"
|
||||
|
||||
|
||||
def test_event_date_column_single_occurrence(event_index):
|
||||
event = EventPageFactory(parent=event_index)
|
||||
start = timezone.make_aware(datetime(2025, 7, 22, 19, 30))
|
||||
EventOccurrence.objects.create(event=event, start=start, venue_custom="X")
|
||||
column = EventDateColumn("event_date")
|
||||
|
||||
assert column.get_value(event) == "2025-07-22 kl 19:30"
|
||||
|
||||
|
||||
def test_event_date_column_multiple_occurrences_shows_count(event_index):
|
||||
event = EventPageFactory(parent=event_index)
|
||||
now = timezone.now()
|
||||
EventOccurrence.objects.create(event=event, start=now, venue_custom="X")
|
||||
EventOccurrence.objects.create(event=event, start=now + timedelta(days=1), venue_custom="X")
|
||||
EventOccurrence.objects.create(event=event, start=now + timedelta(days=2), venue_custom="X")
|
||||
column = EventDateColumn("event_date")
|
||||
|
||||
assert column.get_value(event) == "3 forekomster"
|
||||
|
||||
|
||||
def test_organizers_column_no_organizers(event_index):
|
||||
event = EventPageFactory(parent=event_index)
|
||||
column = OrganizersColumn("organizers")
|
||||
|
||||
assert column.get_value(event) == "—"
|
||||
|
||||
|
||||
def test_organizers_column_single_organizer_shows_name(event_index):
|
||||
org = EventOrganizer.objects.create(name="Forening A", slug="forening-a")
|
||||
event = EventPageFactory(parent=event_index)
|
||||
EventOrganizerLink.objects.create(event=event, organizer=org)
|
||||
column = OrganizersColumn("organizers")
|
||||
|
||||
assert column.get_value(event) == "Forening A"
|
||||
|
||||
|
||||
def test_organizers_column_multiple_organizers_truncates_with_count(event_index):
|
||||
org_a = EventOrganizer.objects.create(name="Forening A", slug="forening-a")
|
||||
org_b = EventOrganizer.objects.create(name="Forening B", slug="forening-b")
|
||||
org_c = EventOrganizer.objects.create(name="Forening C", slug="forening-c")
|
||||
event = EventPageFactory(parent=event_index)
|
||||
EventOrganizerLink.objects.create(event=event, organizer=org_a, sort_order=0)
|
||||
EventOrganizerLink.objects.create(event=event, organizer=org_b, sort_order=1)
|
||||
EventOrganizerLink.objects.create(event=event, organizer=org_c, sort_order=2)
|
||||
column = OrganizersColumn("organizers")
|
||||
|
||||
assert column.get_value(event) == "Forening A (+2)"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def comprehensive_event(event_index, venue, association_index):
|
||||
"""A fully-populated paid EventPage exercising every field exposed via GraphQL."""
|
||||
|
||||
Reference in New Issue
Block a user