def test_orphans(self): request = Request.blank('/?page=10') # without boundaries, should be 11 pages paginator = Paginator(request=request, count=105, limit=10) self.assertEqual(paginator.pages_count, 11) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(105)), range(90, 100)) # using orphans, count=105, orphans = 5, should be 10 pages paginator = Paginator(request=request, count=105, orphans=5, limit=10) self.assertEqual(paginator.pages_count, 10) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(105)), range(90, 105)) paginator.items = paginator.slice(range(105)) # XXX write a list of items self.assertEqual(list(paginator.enumerate()), list(zip(range(91, 106), range(90, 105)))) # using orphans, count=106, orphans = 5, should be 11 pages paginator = Paginator(request=request, count=106, orphans=5, limit=10) self.assertEqual(paginator.pages_count, 11) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(106)), range(90, 100)) paginator.items = paginator.slice(range(106)) self.assertEqual(list(paginator.enumerate()), list(zip(range(91, 101), range(90, 100))))
def test_orphans(self): request = Request.blank('/?page=10') # without boundaries, should be 11 pages paginator = Paginator(request=request, count=105, limit=10) self.assertEqual(paginator.pages_count, 11) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(105)), range(90, 100)) # using orphans, count=105, orphans = 5, should be 10 pages paginator = Paginator(request=request, count=105, orphans=5, limit=10) self.assertEqual(paginator.pages_count, 10) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(105)), range(90, 105)) paginator.items = paginator.slice(range(105)) self.assertEqual(list(paginator.enumerate()), zip(range(91, 106), range(90, 105))) # using orphans, count=106, orphans = 5, should be 11 pages paginator = Paginator(request=request, count=106, orphans=5, limit=10) self.assertEqual(paginator.pages_count, 11) self.assertEqual(paginator.page, 10) self.assertEqual(paginator.slice(range(106)), range(90, 100)) paginator.items = paginator.slice(range(106)) self.assertEqual(list(paginator.enumerate()), zip(range(91, 101), range(90, 100)))
def test_page_param(self): paginator = Paginator(limit=4, count=9, request=Request.blank('/news?p=2'), page_param='p') paginator.items = paginator.slice(range(5)) self.assertEqual(paginator.next.url, '/news?p=3')
def test_enumerate(self): paginator = Paginator(limit=4, count=6, request=Request.blank('/news?p=2'), page_param='p') paginator.items = paginator.slice(range(6)) self.assertEqual(list(paginator.enumerate()), [ (5, 4), (6, 5), ])
def test_last_page(self): paginator = Paginator(limit=4, count=5, request=Request.blank('/news?page=2')) paginator.items = paginator.slice(range(5)) self.assertEqual(paginator.count, 5) self.assertEqual(paginator.page, 2) self.assertEqual(paginator.pages_count, 2) self.assertEqual(paginator.prev, (1, '/news')) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (2, '/news?page=2')) self.assertEqual(paginator.pages, [(1, '/news'), (2, '/news?page=2')]) self.assertEqual(paginator.items, [4])
def test_no_limit(self): def pages(paginator): return [x.page for x in paginator.pages] paginator = Paginator(count=10, request=Request.blank('/news')) paginator.items = paginator.slice(range(8)) self.assertEqual(paginator.count, 10) self.assertEqual(paginator.page, 1) self.assertEqual(paginator.pages_count, 1) self.assertEqual(paginator.prev, NONE) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (1, '/news')) self.assertEqual(pages(paginator), [1]) self.assertEqual(paginator.items, [0,1,2,3,4,5,6,7])
def test_last_page(self): paginator = Paginator(limit=4, count=5, request=Request.blank('/news?page=2')) paginator.items = paginator.slice(list(range(5))) self.assertEqual(paginator.count, 5) self.assertEqual(paginator.page, 2) self.assertEqual(paginator.pages_count, 2) self.assertEqual(paginator.prev, (1, '/news')) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (2, '/news?page=2')) self.assertEqual(paginator.pages, [(1, '/news'), (2, '/news?page=2')]) self.assertEqual(paginator.items, [4])
def test_no_limit(self): def pages(paginator): return [x.page for x in paginator.pages] paginator = Paginator(count=10, request=Request.blank('/news')) paginator.items = paginator.slice(list(range(8))) self.assertEqual(paginator.count, 10) self.assertEqual(paginator.page, 1) self.assertEqual(paginator.pages_count, 1) self.assertEqual(paginator.prev, NONE) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (1, '/news')) self.assertEqual(pages(paginator), [1]) self.assertEqual(paginator.items, [0,1,2,3,4,5,6,7])
def test_not_existing_page(self): paginator = Paginator(limit=4, count=8, request=Request.blank('/news?page=3')) paginator.items = paginator.slice(range(8)) self.assertEqual(paginator.count, 8) self.assertEqual(paginator.page, 3) self.assertEqual(paginator.pages_count, 2) self.assertEqual(paginator.prev, (2, '/news?page=2')) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (2, '/news?page=2')) self.assertEqual(paginator.pages, [(1, '/news'), (2, '/news?page=2')]) self.assertEqual(paginator.items, []) paginator = Paginator(limit=4, count=8, request=Request.blank('/news?page=10')) self.assertEqual(paginator.prev, (2, '/news?page=2'))
def test_not_existing_page(self): paginator = Paginator(limit=4, count=8, request=Request.blank('/news?page=3')) paginator.items = paginator.slice(list(range(8))) self.assertEqual(paginator.count, 8) self.assertEqual(paginator.page, 3) self.assertEqual(paginator.pages_count, 2) self.assertEqual(paginator.prev, (2, '/news?page=2')) self.assertEqual(paginator.next, NONE) self.assertEqual(paginator.first, (1, '/news')) self.assertEqual(paginator.last, (2, '/news?page=2')) self.assertEqual(paginator.pages, [(1, '/news'), (2, '/news?page=2')]) self.assertEqual(paginator.items, []) paginator = Paginator(limit=4, count=8, request=Request.blank('/news?page=10')) self.assertEqual(paginator.prev, (2, '/news?page=2'))