diff options
Diffstat (limited to 'src/mailman/rest/tests')
| -rw-r--r-- | src/mailman/rest/tests/test_lists.py | 14 | ||||
| -rw-r--r-- | src/mailman/rest/tests/test_paginate.py | 97 |
2 files changed, 58 insertions, 53 deletions
diff --git a/src/mailman/rest/tests/test_lists.py b/src/mailman/rest/tests/test_lists.py index 8e89f423c..546e431d3 100644 --- a/src/mailman/rest/tests/test_lists.py +++ b/src/mailman/rest/tests/test_lists.py @@ -287,7 +287,7 @@ class TestListPagination(unittest.TestCase): 'http://localhost:9001/3.0/domains/example.com/lists' '?count=1&page=1') # There are 6 total lists, but only the first one in the page. - self.assertEqual(resource['total_size'], 1) + self.assertEqual(resource['total_size'], 6) self.assertEqual(resource['start'], 0) self.assertEqual(len(resource['entries']), 1) entry = resource['entries'][0] @@ -298,8 +298,8 @@ class TestListPagination(unittest.TestCase): 'http://localhost:9001/3.0/domains/example.com/lists' '?count=1&page=2') # There are 6 total lists, but only the first one in the page. - self.assertEqual(resource['total_size'], 1) - self.assertEqual(resource['start'], 0) + self.assertEqual(resource['total_size'], 6) + self.assertEqual(resource['start'], 1) self.assertEqual(len(resource['entries']), 1) entry = resource['entries'][0] self.assertEqual(entry['fqdn_listname'], 'bee@example.com') @@ -309,8 +309,8 @@ class TestListPagination(unittest.TestCase): 'http://localhost:9001/3.0/domains/example.com/lists' '?count=1&page=6') # There are 6 total lists, but only the first one in the page. - self.assertEqual(resource['total_size'], 1) - self.assertEqual(resource['start'], 0) + self.assertEqual(resource['total_size'], 6) + self.assertEqual(resource['start'], 5) self.assertEqual(len(resource['entries']), 1) entry = resource['entries'][0] self.assertEqual(entry['fqdn_listname'], 'fly@example.com') @@ -337,6 +337,6 @@ class TestListPagination(unittest.TestCase): 'http://localhost:9001/3.0/domains/example.com/lists' '?count=1&page=7') # There are 6 total lists, but only the first one in the page. - self.assertEqual(resource['total_size'], 0) - self.assertEqual(resource['start'], 0) + self.assertEqual(resource['total_size'], 6) + self.assertEqual(resource['start'], 6) self.assertNotIn('entries', resource) diff --git a/src/mailman/rest/tests/test_paginate.py b/src/mailman/rest/tests/test_paginate.py index 830af58ff..eeba3ad92 100644 --- a/src/mailman/rest/tests/test_paginate.py +++ b/src/mailman/rest/tests/test_paginate.py @@ -27,7 +27,7 @@ import unittest from falcon import HTTPInvalidParam, Request from mailman.app.lifecycle import create_list from mailman.database.transaction import transaction -from mailman.rest.helpers import paginate +from mailman.rest.helpers import CollectionMixin from mailman.testing.layers import RESTLayer @@ -51,79 +51,84 @@ class TestPaginateHelper(unittest.TestCase): with transaction(): self._mlist = create_list('test@example.com') + def _get_resource(self): + class Resource(CollectionMixin): + def _get_collection(self, request): + return ['one', 'two', 'three', 'four', 'five'] + def _resource_as_dict(self, res): + return {'value': res} + return Resource() + def test_no_pagination(self): # When there is no pagination params in the request, all 5 items in # the collection are returned. - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] + resource = self._get_resource() # Expect 5 items - page = get_collection(None, _FakeRequest()) - self.assertEqual(page, ['one', 'two', 'three', 'four', 'five']) + page = resource._make_collection(_FakeRequest()) + self.assertEqual(page['start'], 0) + self.assertEqual(page['total_size'], 5) + self.assertEqual( + [entry['value'] for entry in page['entries']], + ['one', 'two', 'three', 'four', 'five']) def test_valid_pagination_request_page_one(self): # ?count=2&page=1 returns the first page, with two items in it. - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - page = get_collection(None, _FakeRequest(2, 1)) - self.assertEqual(page, ['one', 'two']) + resource = self._get_resource() + page = resource._make_collection(_FakeRequest(2, 1)) + self.assertEqual(page['start'], 0) + self.assertEqual(page['total_size'], 5) + self.assertEqual( + [entry['value'] for entry in page['entries']], ['one', 'two']) def test_valid_pagination_request_page_two(self): # ?count=2&page=2 returns the second page, where a page has two items # in it. - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - page = get_collection(None, _FakeRequest(2, 2)) - self.assertEqual(page, ['three', 'four']) + resource = self._get_resource() + page = resource._make_collection(_FakeRequest(2, 2)) + self.assertEqual(page['start'], 2) + self.assertEqual(page['total_size'], 5) + self.assertEqual( + [entry['value'] for entry in page['entries']], ['three', 'four']) def test_2nd_index_larger_than_total(self): # ?count=2&page=3 returns the third page with page size 2, but the # last page only has one item in it. - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - page = get_collection(None, _FakeRequest(2, 3)) - self.assertEqual(page, ['five']) + resource = self._get_resource() + page = resource._make_collection(_FakeRequest(2, 3)) + self.assertEqual(page['start'], 4) + self.assertEqual(page['total_size'], 5) + self.assertEqual( + [entry['value'] for entry in page['entries']], ['five']) def test_out_of_range_returns_empty_list(self): # ?count=2&page=4 returns the fourth page, which doesn't exist, so an # empty collection is returned. - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - page = get_collection(None, _FakeRequest(2, 4)) - self.assertEqual(page, []) + resource = self._get_resource() + page = resource._make_collection(_FakeRequest(2, 4)) + self.assertEqual(page['start'], 6) + self.assertEqual(page['total_size'], 5) + self.assertNotIn('entries', page) def test_count_as_string_returns_bad_request(self): # ?count=two&page=2 are not valid values, so a bad request occurs. - @paginate - def get_collection(self, request): - return [] - self.assertRaises(HTTPInvalidParam, get_collection, - None, _FakeRequest('two', 1)) + resource = self._get_resource() + self.assertRaises(HTTPInvalidParam, resource._make_collection, + _FakeRequest('two', 1)) def test_negative_count(self): # ?count=-1&page=1 - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - self.assertRaises(HTTPInvalidParam, get_collection, - None, _FakeRequest(-1, 1)) + resource = self._get_resource() + self.assertRaises(HTTPInvalidParam, resource._make_collection, + _FakeRequest(-1, 1)) def test_negative_page(self): # ?count=1&page=-1 - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - self.assertRaises(HTTPInvalidParam, get_collection, - None, _FakeRequest(1, -1)) + resource = self._get_resource() + self.assertRaises(HTTPInvalidParam, resource._make_collection, + _FakeRequest(1, -1)) def test_negative_page_and_count(self): # ?count=1&page=-1 - @paginate - def get_collection(self, request): - return ['one', 'two', 'three', 'four', 'five'] - self.assertRaises(HTTPInvalidParam, get_collection, - None, _FakeRequest(-1, -1)) + resource = self._get_resource() + self.assertRaises(HTTPInvalidParam, resource._make_collection, + _FakeRequest(-1, -1)) |
