diff options
| author | Tom Christie | 2015-01-22 16:12:05 +0000 | 
|---|---|---|
| committer | Tom Christie | 2015-01-22 16:12:05 +0000 | 
| commit | 0822c9e55820f8e4737329e38abc2e21718af9e5 (patch) | |
| tree | 5c1a5f1a80e7f28ff1bdb4c94bfa595a7b58cbfd /tests/test_pagination.py | |
| parent | 408261ee02b176732b7f840f7042e7c24f3ecd27 (diff) | |
| download | django-rest-framework-0822c9e55820f8e4737329e38abc2e21718af9e5.tar.bz2 | |
Cursor pagination now works with OrderingFilter
Diffstat (limited to 'tests/test_pagination.py')
| -rw-r--r-- | tests/test_pagination.py | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/tests/test_pagination.py b/tests/test_pagination.py index c05b4aba..338be610 100644 --- a/tests/test_pagination.py +++ b/tests/test_pagination.py @@ -77,6 +77,20 @@ class TestPaginationIntegration:              'count': 50          } +    def test_setting_page_size_to_zero(self): +        """ +        When page_size parameter is invalid it should return to the default. +        """ +        request = factory.get('/', {'page_size': 0}) +        response = self.view(request) +        assert response.status_code == status.HTTP_200_OK +        assert response.data == { +            'results': [2, 4, 6, 8, 10], +            'previous': None, +            'next': 'http://testserver/?page=2&page_size=0', +            'count': 50 +        } +      def test_additional_query_params_are_preserved(self):          request = factory.get('/', {'page': 2, 'filter': 'even'})          response = self.view(request) @@ -88,6 +102,14 @@ class TestPaginationIntegration:              'count': 50          } +    def test_404_not_found_for_zero_page(self): +        request = factory.get('/', {'page': '0'}) +        response = self.view(request) +        assert response.status_code == status.HTTP_404_NOT_FOUND +        assert response.data == { +            'detail': 'Invalid page "0": That page number is less than 1.' +        } +      def test_404_not_found_for_invalid_page(self):          request = factory.get('/', {'page': 'invalid'})          response = self.view(request) @@ -507,6 +529,24 @@ class TestCursorPagination:          with pytest.raises(exceptions.NotFound):              self.pagination.paginate_queryset(self.queryset, request) +    def test_use_with_ordering_filter(self): +        class MockView: +            filter_backends = (filters.OrderingFilter,) +            ordering_fields = ['username', 'created'] +            ordering = 'created' + +        request = Request(factory.get('/', {'ordering': 'username'})) +        ordering = self.pagination.get_ordering(request, [], MockView()) +        assert ordering == ('username',) + +        request = Request(factory.get('/', {'ordering': '-username'})) +        ordering = self.pagination.get_ordering(request, [], MockView()) +        assert ordering == ('-username',) + +        request = Request(factory.get('/', {'ordering': 'invalid'})) +        ordering = self.pagination.get_ordering(request, [], MockView()) +        assert ordering == ('created',) +      def test_cursor_pagination(self):          (previous, current, next, previous_url, next_url) = self.get_pages('/') | 
