Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
hub-client / tests / test_paginators.py
Size: Mime:
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)