12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- from django.test import TestCase
- from misago.threads.paginator import PostsPaginator
- class PostsPaginatorTests(TestCase):
- def test_paginator(self):
- """pages share first and last items with each other"""
- items = [i + 1 for i in range(30)]
- paginator = PostsPaginator(items, 5)
- 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):
- """paginator handles orphans"""
- items = [i + 1 for i in range(20)]
- paginator = PostsPaginator(items, 8, 6)
- 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, 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, 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],
- ])
- # regression test for #732
- items = [i + 1 for i in range(24)]
- 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],
- ])
- # 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([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])
- 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
|