예제 #1
0
class UniquePaginationTestCase(unittest.TestCase):

    endpoint = 'http://example.com/integers'

    # Specification of the fake paginated API endpoint.
    total = 14
    per_page = 4
    pages = int(ceil(float(total) / per_page))

    def setUp(self):
        """
        Set up fake paginated API endpoint using responses.

        """

        def paginated_resource(request):

            params = parse_qs(urlparse(request.url).query)
            page = int(params['page'][0]) if 'page' in params else 1

            start = self.per_page * (page - 1)
            end = min(self.per_page * page, self.total)
            data = list({'name': 'duplicate'} for x in range(start, end))

            next_url = None
            if page < self.pages:
                next_url = '%s?page=%d' % (self.endpoint, page + 1)

            response = {'count': self.total, 'results': data, 'next': next_url}
            return (200, {}, json.dumps(response))

        responses.add_callback(responses.GET, self.endpoint,
                               callback=paginated_resource,
                               content_type='application/json')

    @responses.activate
    def test_deduplicate_elements(self):
        self.plist = PaginatedResourceList(Struct, self.endpoint,
                                           unique_field='name')
        self.assertEqual(self.plist.count(), 1)
예제 #2
0
 def test_deduplicate_elements(self):
     self.plist = PaginatedResourceList(Struct, self.endpoint,
                                        unique_field='name')
     self.assertEqual(self.plist.count(), 1)