test_paginator.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from django.test import TestCase
  2. from misago.threads.paginator import PostsPaginator
  3. class PostsPaginatorTests(TestCase):
  4. def test_paginator(self):
  5. """pages share first and last items with each other"""
  6. items = [i + 1 for i in range(30)]
  7. paginator = PostsPaginator(items, 5)
  8. self.assertEqual(paginator.num_pages, 8)
  9. self.assertEqual(paginator.page(1).object_list, [1, 2, 3, 4, 5])
  10. self.assertEqual(paginator.page(2).object_list, [5, 6, 7, 8, 9])
  11. self.assertEqual(paginator.page(3).object_list, [9, 10, 11, 12, 13])
  12. self.assertEqual(paginator.page(4).object_list, [13, 14, 15, 16, 17])
  13. self.assertEqual(paginator.page(5).object_list, [17, 18, 19, 20, 21])
  14. self.assertEqual(paginator.page(6).object_list, [21, 22, 23, 24, 25])
  15. self.assertEqual(paginator.page(7).object_list, [25, 26, 27, 28, 29])
  16. self.assertEqual(paginator.page(8).object_list, [29, 30])
  17. def test_paginator_orphans(self):
  18. """paginator handles orphans"""
  19. items = [i + 1 for i in range(20)]
  20. paginator = PostsPaginator(items, 8, 6)
  21. self.assertEqual(paginator.num_pages, 2)
  22. self.assertEqual(
  23. paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
  24. self.assertEqual(
  25. paginator.page(2).object_list,
  26. [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
  27. paginator = PostsPaginator(items, 8, 4)
  28. self.assertEqual(paginator.num_pages, 3)
  29. self.assertEqual(
  30. paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
  31. self.assertEqual(
  32. paginator.page(2).object_list, [8, 9, 10, 11, 12, 13, 14, 15])
  33. self.assertEqual(
  34. paginator.page(3).object_list, [15, 16, 17, 18, 19, 20])
  35. paginator = PostsPaginator(items, 8, 6)
  36. self.assertEqual(paginator.num_pages, 2)
  37. self.assertEqual(
  38. paginator.page(1).object_list, [1, 2, 3, 4, 5, 6, 7, 8])
  39. self.assertEqual(
  40. paginator.page(2).object_list,
  41. [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
  42. paginator = PostsPaginator(items, 6, 5)
  43. self.assertEqual(paginator.num_pages, 3)
  44. self.assertEqual(paginator.page(1).object_list, [1, 2, 3, 4, 5, 6])
  45. self.assertEqual(paginator.page(2).object_list, [6, 7, 8, 9, 10, 11])
  46. self.assertEqual(
  47. paginator.page(3).object_list,
  48. [11, 12, 13, 14, 15, 16, 17, 18, 19, 20])