Exemplo n.º 1
0
    def test_unicode_request(self):
        request = {
            'slug__startswith': u'☃',
            'format': 'json',
        }
        paginator = Paginator(request, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=2)
        meta = paginator.page()['meta']
        self.assertEqual(meta['limit'], 2)
        self.assertEqual(meta['offset'], 2)
        self.assertTrue('limit=2' in meta['previous'])
        self.assertTrue('offset=0' in meta['previous'])
        self.assertTrue('slug__startswith=%E2%98%83' in meta['previous'])
        self.assertTrue('format=json' in meta['previous'])
        self.assertTrue('limit=2' in meta['next'])
        self.assertTrue('offset=4' in meta['next'])
        self.assertTrue('slug__startswith=%E2%98%83' in meta['next'])
        self.assertTrue('format=json' in meta['next'])
        self.assertEqual(meta['total_count'], 6)

        request = QueryDict('slug__startswith=☃&format=json')
        paginator = Paginator(request, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=2)
        meta = paginator.page()['meta']
        self.assertEqual(meta['limit'], 2)
        self.assertEqual(meta['offset'], 2)
        self.assertTrue('limit=2' in meta['previous'])
        self.assertTrue('offset=0' in meta['previous'])
        self.assertTrue('slug__startswith=%E2%98%83' in meta['previous'])
        self.assertTrue('format=json' in meta['previous'])
        self.assertTrue('limit=2' in meta['next'])
        self.assertTrue('offset=4' in meta['next'])
        self.assertTrue('slug__startswith=%E2%98%83' in meta['next'])
        self.assertTrue('format=json' in meta['next'])
        self.assertEqual(meta['total_count'], 6)
Exemplo n.º 2
0
 def test_custom_collection_name(self):
     paginator = Paginator({}, self.data_set, resource_uri='/api/v1/notes/', limit=20, offset=0, collection_name='notes')
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 20)
     self.assertEqual(meta['offset'], 0)
     self.assertEqual(meta['previous'], None)
     self.assertEqual(meta['next'], None)
     self.assertEqual(meta['total_count'], 6)
     self.assertEqual(len(paginator.page()['notes']), 6)
Exemplo n.º 3
0
 def test_large_limit(self):
     paginator = Paginator({}, self.data_set, resource_uri='/api/v1/notes/', limit=20, offset=0)
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 20)
     self.assertEqual(meta['offset'], 0)
     self.assertEqual(meta['previous'], None)
     self.assertEqual(meta['next'], None)
     self.assertEqual(meta['total_count'], 6)
Exemplo n.º 4
0
 def test_all(self):
     paginator = Paginator({'limit': 0}, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=0)
     page = paginator.page()
     meta = page['meta']
     self.assertEqual(meta['limit'], 1000)
     self.assertEqual(meta['offset'], 0)
     self.assertEqual(meta['total_count'], 6)
     self.assertEqual(len(page['objects']), 6)
Exemplo n.º 5
0
 def test_page3(self):
     paginator = Paginator({}, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=4)
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 2)
     self.assertEqual(meta['offset'], 4)
     self.assertTrue('limit=2' in meta['previous'])
     self.assertTrue('offset=2' in meta['previous'])
     self.assertEqual(meta['next'], None)
     self.assertEqual(meta['total_count'], 6)
Exemplo n.º 6
0
 def test_page3_with_request(self):
     for req in [{'offset' : '4', 'limit' : '2'}, QueryDict('offset=4&limit=2')]:
         paginator = Paginator(req, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=4)
         meta = paginator.page()['meta']
         self.assertEqual(meta['limit'], 2)
         self.assertEqual(meta['offset'], 4)
         self.assertTrue('limit=2' in meta['previous'])
         self.assertTrue('offset=2' in meta['previous'])
         self.assertEqual(meta['next'], None)
         self.assertEqual(meta['total_count'], 6)
Exemplo n.º 7
0
 def test_multiple(self):
     request = QueryDict('a=1&a=2')
     paginator = Paginator(request, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=2)
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 2)
     self.assertEqual(meta['offset'], 2)
     self.assertTrue('limit=2' in meta['previous'])
     self.assertTrue('offset=0' in meta['previous'])
     self.assertTrue('a=1' in meta['previous'])
     self.assertTrue('a=2' in meta['previous'])
     self.assertTrue('limit=2' in meta['next'])
     self.assertTrue('offset=4' in meta['next'])
     self.assertTrue('a=1' in meta['next'])
     self.assertTrue('a=2' in meta['next'])
Exemplo n.º 8
0
 def test_complex_get(self):
     request = {
         'slug__startswith': 'food',
         'format': 'json',
     }
     paginator = Paginator(request, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=2)
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 2)
     self.assertEqual(meta['offset'], 2)
     self.assertTrue('limit=2' in meta['previous'])
     self.assertTrue('offset=0' in meta['previous'])
     self.assertTrue('slug__startswith=food' in meta['previous'])
     self.assertTrue('format=json' in meta['previous'])
     self.assertTrue('limit=2' in meta['next'])
     self.assertTrue('offset=4' in meta['next'])
     self.assertTrue('slug__startswith=food' in meta['next'])
     self.assertTrue('format=json' in meta['next'])
     self.assertEqual(meta['total_count'], 6)
Exemplo n.º 9
0
    def test_page1(self):
        reset_queries()
        self.assertEqual(len(self._get_query_count()), 0)

        paginator = Paginator({}, self.data_set, resource_uri='/api/v1/notes/', limit=2, offset=0)

        # REGRESSION: Check to make sure only part of the cache is full.
        # We used to run ``len()`` on the ``QuerySet``, which would populate
        # the entire result set. Owwie.
        paginator.get_count()
        self.assertEqual(len(self._get_query_count()), 1)
        # Should be nothing in the cache.
        self.assertEqual(paginator.objects._result_cache, None)

        meta = paginator.page()['meta']
        self.assertEqual(meta['limit'], 2)
        self.assertEqual(meta['offset'], 0)
        self.assertEqual(meta['previous'], None)
        self.assertTrue('limit=2' in meta['next'])
        self.assertTrue('offset=2' in meta['next'])
        self.assertEqual(meta['total_count'], 6)
Exemplo n.º 10
0
 def test_max_limit_none(self):
     paginator = Paginator({'limit': 0}, self.data_set, max_limit=None,
                           resource_uri='/api/v1/notes/')
     meta = paginator.page()['meta']
     self.assertEqual(meta['limit'], 0)
Exemplo n.º 11
0
 def test_regression_nonqueryset(self):
     paginator = Paginator({}, ['foo', 'bar', 'baz'], limit=2, offset=0)
     # This would fail due to ``count`` being present on ``list`` but called
     # differently.
     page = paginator.page()
     self.assertEqual(page['objects'], ['foo', 'bar'])