|
@@ -9,54 +9,59 @@ class PostsPaginatorTests(TestCase):
|
|
items = [i + 1 for i in range(30)]
|
|
items = [i + 1 for i in range(30)]
|
|
|
|
|
|
paginator = PostsPaginator(items, 5)
|
|
paginator = PostsPaginator(items, 5)
|
|
- self.assertEqual(paginator.num_pages, 8)
|
|
|
|
-
|
|
|
|
- self.assertEqual(paginator.page(1).object_list, [1, 2, 3, 4, 5])
|
|
|
|
- self.assertEqual(paginator.page(2).object_list, [5, 6, 7, 8, 9])
|
|
|
|
- self.assertEqual(paginator.page(3).object_list, [9, 10, 11, 12, 13])
|
|
|
|
- self.assertEqual(paginator.page(4).object_list, [13, 14, 15, 16, 17])
|
|
|
|
- self.assertEqual(paginator.page(5).object_list, [17, 18, 19, 20, 21])
|
|
|
|
- self.assertEqual(paginator.page(6).object_list, [21, 22, 23, 24, 25])
|
|
|
|
- self.assertEqual(paginator.page(7).object_list, [25, 26, 27, 28, 29])
|
|
|
|
- self.assertEqual(paginator.page(8).object_list, [29, 30])
|
|
|
|
|
|
+ self.assertEqual(self.get_paginator_items_list(paginator), [
|
|
|
|
+ [1, 2, 3, 4, 5, 6],
|
|
|
|
+ [6, 7, 8, 9, 10, 11],
|
|
|
|
+ [11, 12, 13, 14, 15, 16],
|
|
|
|
+ [16, 17, 18, 19, 20, 21],
|
|
|
|
+ [21, 22, 23, 24, 25, 26],
|
|
|
|
+ [26, 27, 28, 29, 30],
|
|
|
|
+ ])
|
|
|
|
|
|
def test_paginator_orphans(self):
|
|
def test_paginator_orphans(self):
|
|
"""paginator handles orphans"""
|
|
"""paginator handles orphans"""
|
|
items = [i + 1 for i in range(20)]
|
|
items = [i + 1 for i in range(20)]
|
|
|
|
|
|
paginator = PostsPaginator(items, 8, 6)
|
|
paginator = PostsPaginator(items, 8, 6)
|
|
- self.assertEqual(paginator.num_pages, 2)
|
|
|
|
|
|
+ self.assertEqual(self.get_paginator_items_list(paginator), [
|
|
|
|
+ [1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
|
|
+ [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
|
|
|
|
+ ])
|
|
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(2).object_list,
|
|
|
|
- [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
|
|
|
|
|
|
+ paginator = PostsPaginator(items, 8, 5)
|
|
|
|
+ self.assertEqual(paginator.num_pages, 2)
|
|
|
|
+ self.assertEqual(self.get_paginator_items_list(paginator), [
|
|
|
|
+ [1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
|
|
+ [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
|
|
|
|
+ ])
|
|
|
|
|
|
- paginator = PostsPaginator(items, 8, 4)
|
|
|
|
- self.assertEqual(paginator.num_pages, 3)
|
|
|
|
|
|
+ paginator = PostsPaginator(items, 9, 3)
|
|
|
|
+ self.assertEqual(paginator.num_pages, 2)
|
|
|
|
+ self.assertEqual(self.get_paginator_items_list(paginator), [
|
|
|
|
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
|
|
|
|
+ [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
|
|
|
|
+ ])
|
|
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(2).object_list, [8, 9, 10, 11, 12, 13, 14, 15])
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(3).object_list, [15, 16, 17, 18, 19, 20])
|
|
|
|
|
|
+ # regression test for #732
|
|
|
|
+ items = [i + 1 for i in range(24)]
|
|
|
|
|
|
- paginator = PostsPaginator(items, 8, 6)
|
|
|
|
- self.assertEqual(paginator.num_pages, 2)
|
|
|
|
|
|
+ paginator = PostsPaginator(items, 18, 6)
|
|
|
|
+ self.assertEqual(paginator.num_pages, 1)
|
|
|
|
+ self.assertEqual(self.get_paginator_items_list(paginator), [
|
|
|
|
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24],
|
|
|
|
+ ])
|
|
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(2).object_list,
|
|
|
|
- [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
|
|
|
|
|
|
+ # extra tests for catching issues in excessively long datasets
|
|
|
|
+ paginator = PostsPaginator([i + 1 for i in range(144)], 14, 6)
|
|
|
|
+ last_page = self.get_paginator_items_list(paginator)[-1]
|
|
|
|
+ self.assertEqual(last_page[-4:], [141, 142, 143, 144])
|
|
|
|
|
|
- paginator = PostsPaginator(items, 6, 5)
|
|
|
|
- self.assertEqual(paginator.num_pages, 3)
|
|
|
|
|
|
+ paginator = PostsPaginator([i + 1 for i in range(321)], 14, 6)
|
|
|
|
+ last_page = self.get_paginator_items_list(paginator)[-1]
|
|
|
|
+ self.assertEqual(last_page[-4:], [318, 319, 320, 321])
|
|
|
|
|
|
- self.assertEqual(paginator.page(1).object_list, [1, 2, 3, 4, 5, 6])
|
|
|
|
- self.assertEqual(paginator.page(2).object_list, [6, 7, 8, 9, 10, 11])
|
|
|
|
- self.assertEqual(
|
|
|
|
- paginator.page(3).object_list,
|
|
|
|
- [11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
|
|
|
|
|
|
+ def get_paginator_items_list(self, paginator):
|
|
|
|
+ items_list = []
|
|
|
|
+ for page in paginator.page_range:
|
|
|
|
+ items_list.append(paginator.page(page).object_list)
|
|
|
|
+ return items_list
|