mirror of
https://github.com/wagtail/wagtail.git
synced 2024-12-01 11:41:20 +01:00
Added unit tests for get_static_site_paths
This commit is contained in:
parent
c194a55304
commit
61779be5c9
@ -1,4 +1,5 @@
|
||||
from django.db import models
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from modelcluster.fields import ParentalKey
|
||||
from wagtail.wagtailcore.models import Page, Orderable
|
||||
from wagtail.wagtailcore.fields import RichTextField
|
||||
@ -187,11 +188,48 @@ class EventIndex(Page):
|
||||
intro = RichTextField(blank=True)
|
||||
ajax_template = 'tests/includes/event_listing.html'
|
||||
|
||||
def get_context(self, request):
|
||||
def get_events(self):
|
||||
return self.get_children().live().type(EventPage)
|
||||
|
||||
def get_paginator(self):
|
||||
return Paginator(self.get_events(), 4)
|
||||
|
||||
def get_context(self, request, page=1):
|
||||
# Pagination
|
||||
paginator = self.get_paginator()
|
||||
try:
|
||||
events = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
events = paginator.page(1)
|
||||
except EmptyPage:
|
||||
events = paginator.page(paginator.num_pages)
|
||||
|
||||
# Update context
|
||||
context = super(EventIndex, self).get_context(request)
|
||||
context['events'] = EventPage.objects.filter(live=True)
|
||||
context['events'] = events
|
||||
return context
|
||||
|
||||
def route(self, request, path_components):
|
||||
if self.live and len(path_components) == 1:
|
||||
try:
|
||||
return self.serve(request, page=int(path_components[0]))
|
||||
except (TypeError, ValueError):
|
||||
pass
|
||||
|
||||
return super(EventIndex, self).route(request, path_components)
|
||||
|
||||
def get_static_site_paths(self):
|
||||
# Get page count
|
||||
page_count = self.get_paginator().num_pages
|
||||
|
||||
# Yield a path for each page
|
||||
for page in range(page_count):
|
||||
yield '/%d/' % (page + 1)
|
||||
|
||||
# Yield from superclass
|
||||
for path in super(EventIndex, self).get_static_site_paths():
|
||||
yield path
|
||||
|
||||
EventIndex.content_panels = [
|
||||
FieldPanel('title', classname="full title"),
|
||||
FieldPanel('intro', classname="full"),
|
||||
|
@ -162,6 +162,47 @@ class TestServeView(TestCase):
|
||||
self.assertContains(response, '<a href="/events/christmas/">Christmas</a>')
|
||||
|
||||
|
||||
class TestStaticSitePaths(TestCase):
|
||||
def setUp(self):
|
||||
self.root_page = Page.objects.get(id=1)
|
||||
|
||||
# For simple tests
|
||||
self.home_page = self.root_page.add_child(instance=SimplePage(title="Homepage", slug="home"))
|
||||
self.about_page = self.home_page.add_child(instance=SimplePage(title="About us", slug="about"))
|
||||
self.contact_page = self.home_page.add_child(instance=SimplePage(title="Contact", slug="contact"))
|
||||
|
||||
# For custom tests
|
||||
self.event_index = self.root_page.add_child(instance=EventIndex(title="Events", slug="events"))
|
||||
for i in range(20):
|
||||
self.event_index.add_child(instance=EventPage(title="Event " + str(i), slug="event" + str(i)))
|
||||
|
||||
def test_local_static_site_paths(self):
|
||||
paths = list(self.about_page.get_static_site_paths())
|
||||
|
||||
self.assertEqual(paths, ['/'])
|
||||
|
||||
def test_child_static_site_paths(self):
|
||||
paths = list(self.home_page.get_static_site_paths())
|
||||
|
||||
self.assertEqual(paths, ['/', '/about/', '/contact/'])
|
||||
|
||||
def test_custom_static_site_paths(self):
|
||||
paths = list(self.event_index.get_static_site_paths())
|
||||
|
||||
# Event index path
|
||||
expected_paths = ['/']
|
||||
|
||||
# One path for each page of results
|
||||
expected_paths.extend(['/' + str(i + 1) + '/' for i in range(5)])
|
||||
|
||||
# One path for each event page
|
||||
expected_paths.extend(['/event' + str(i) + '/' for i in range(20)])
|
||||
|
||||
paths.sort()
|
||||
expected_paths.sort()
|
||||
self.assertEqual(paths, expected_paths)
|
||||
|
||||
|
||||
class TestPageUrlTags(TestCase):
|
||||
fixtures = ['test.json']
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user