| |
@@ -0,0 +1,99 @@
|
| |
+ from __future__ import unicode_literals, absolute_import
|
| |
+
|
| |
+ from hubs.app import app
|
| |
+ from hubs.utils.pagination import paginate # circular
|
| |
+ from hubs.tests import APPTest
|
| |
+
|
| |
+
|
| |
+ class PaginateTestCase(APPTest):
|
| |
+
|
| |
+ def setUp(self):
|
| |
+ super(PaginateTestCase, self).setUp()
|
| |
+ self.paginate = paginate
|
| |
+ self.values = ["A", "B", "C", "D"]
|
| |
+
|
| |
+ def test_base(self):
|
| |
+ with app.test_request_context('/'):
|
| |
+ result = self.paginate(self.values, 3)
|
| |
+ self.assertListEqual(result[0], self.values[:3])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': True,
|
| |
+ 'has_prev': False,
|
| |
+ 'nr': 1,
|
| |
+ 'total_entries': len(self.values),
|
| |
+ 'total_pages': 2,
|
| |
+ })
|
| |
+
|
| |
+ def test_page_2(self):
|
| |
+ with app.test_request_context('/?page=2'):
|
| |
+ result = self.paginate(self.values, 3)
|
| |
+ self.assertListEqual(result[0], self.values[3:])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': False,
|
| |
+ 'has_prev': True,
|
| |
+ 'nr': 2,
|
| |
+ 'total_entries': len(self.values),
|
| |
+ 'total_pages': 2,
|
| |
+ })
|
| |
+
|
| |
+ def test_page_0(self):
|
| |
+ with app.test_request_context('/?page=0'):
|
| |
+ result = self.paginate(self.values, 3)
|
| |
+ self.assertListEqual(result[0], self.values[:3])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': True,
|
| |
+ 'has_prev': False,
|
| |
+ 'nr': 1,
|
| |
+ 'total_entries': len(self.values),
|
| |
+ 'total_pages': 2,
|
| |
+ })
|
| |
+
|
| |
+ def test_invalid_page(self):
|
| |
+ with app.test_request_context('/?page=blah'):
|
| |
+ result = self.paginate(self.values, 3)
|
| |
+ self.assertListEqual(result[0], self.values[:3])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': True,
|
| |
+ 'has_prev': False,
|
| |
+ 'nr': 1,
|
| |
+ 'total_entries': len(self.values),
|
| |
+ 'total_pages': 2,
|
| |
+ })
|
| |
+
|
| |
+ def test_page_too_high(self):
|
| |
+ with app.test_request_context('/?page=3'):
|
| |
+ result = self.paginate(self.values, 3)
|
| |
+ self.assertListEqual(result[0], self.values[3:])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': False,
|
| |
+ 'has_prev': True,
|
| |
+ 'nr': 2,
|
| |
+ 'total_entries': len(self.values),
|
| |
+ 'total_pages': 2,
|
| |
+ })
|
| |
+
|
| |
+ def test_single_page(self):
|
| |
+ values = self.values[:3]
|
| |
+ with app.test_request_context('/'):
|
| |
+ result = self.paginate(values, 3)
|
| |
+ self.assertListEqual(result[0], values)
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': False,
|
| |
+ 'has_prev': False,
|
| |
+ 'nr': 1,
|
| |
+ 'total_entries': len(values),
|
| |
+ 'total_pages': 1,
|
| |
+ })
|
| |
+
|
| |
+ def test_no_value(self):
|
| |
+ values = []
|
| |
+ with app.test_request_context('/'):
|
| |
+ result = self.paginate(values, 3)
|
| |
+ self.assertListEqual(result[0], [])
|
| |
+ self.assertDictEqual(result[1], {
|
| |
+ 'has_next': False,
|
| |
+ 'has_prev': False,
|
| |
+ 'nr': 1,
|
| |
+ 'total_entries': 0,
|
| |
+ 'total_pages': 1,
|
| |
+ })
|
| |
This is just some code being moved around.