Repository URL to install this package:
|
Version:
0.32.0 ▾
|
from django.test import TestCase
from django.core.paginator import EmptyPage, PageNotAnInteger
from dockerhub.paginators import LazyPaginator
class LazyPaginatoreTestCase(TestCase):
def setUp(self):
# weird range I know, but due to the math, if we have a per_page of 7,
# and orphans of 2, then the math works out that 1003 items will
# include orphans
self.items = range(0, 1003)
self.per_page = 7
self.paginator = LazyPaginator(
self.items, self.per_page, orphans=2)
def test_get_current_per_page(self):
self.assertEqual(self.paginator.get_current_per_page(1), 7)
self.assertEqual(self.paginator.get_current_per_page(100), 7)
def test_items_count(self):
# The lazy paginator does not implement items count.
with self.assertRaises(NotImplementedError):
self.paginator.count
def test_num_pages(self):
# The number of pages depends on the current page.
self.paginator.page(2)
self.assertEqual(3, self.paginator.num_pages)
def test_page_range(self):
# The lazy paginator does not implement page range.
with self.assertRaises(NotImplementedError):
self.paginator.page_range
def test_object_list(self):
# Ensure the paginator correctly returns objects for each page.
first_page = 7
expected = self.items[first_page:first_page + self.per_page]
object_list = self.paginator.page(2).object_list
self.assertSequenceEqual(expected, object_list)
def test_orphans(self):
# Ensure orphans are included in the last page.
object_list = self.paginator.page(143).object_list
self.assertSequenceEqual(self.items[-9:], object_list)
def test_no_orphans(self):
# Ensure exceeding orphans generate a new page.
paginator = LazyPaginator(range(11), 8, orphans=2)
object_list = paginator.page(2).object_list
self.assertEqual(3, len(object_list))
def test_empty_page(self):
# En error if raised if the requested page does not exist.
with self.assertRaises(EmptyPage):
self.paginator.page(999)
def test_invalid_page(self):
# En error is raised if the requested page is not valid.
with self.assertRaises(PageNotAnInteger):
self.paginator.page('__not_valid__')
with self.assertRaises(EmptyPage):
self.paginator.page(0)