diff options
Diffstat (limited to 'tests/test_pagination.py')
| -rw-r--r-- | tests/test_pagination.py | 33 | 
1 files changed, 18 insertions, 15 deletions
| diff --git a/tests/test_pagination.py b/tests/test_pagination.py index 65fa9dcd..293146c0 100644 --- a/tests/test_pagination.py +++ b/tests/test_pagination.py @@ -8,15 +8,18 @@ from django.utils import unittest  from rest_framework import generics, status, pagination, filters, serializers  from rest_framework.compat import django_filters  from rest_framework.test import APIRequestFactory -from tests.models import BasicModel +from .models import BasicModel, FilterableItem  factory = APIRequestFactory() +# Helper function to split arguments out of an url +def split_arguments_from_url(url): +    if '?' not in url: +        return url -class FilterableItem(models.Model): -    text = models.CharField(max_length=100) -    decimal = models.DecimalField(max_digits=4, decimal_places=2) -    date = models.DateField() +    path, args = url.split('?') +    args = dict(r.split('=') for r in args.split('&')) +    return path, args  class RootView(generics.ListCreateAPIView): @@ -84,7 +87,7 @@ class IntegrationTestPagination(TestCase):          self.assertNotEqual(response.data['next'], None)          self.assertEqual(response.data['previous'], None) -        request = factory.get(response.data['next']) +        request = factory.get(*split_arguments_from_url(response.data['next']))          with self.assertNumQueries(2):              response = self.view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -93,7 +96,7 @@ class IntegrationTestPagination(TestCase):          self.assertNotEqual(response.data['next'], None)          self.assertNotEqual(response.data['previous'], None) -        request = factory.get(response.data['next']) +        request = factory.get(*split_arguments_from_url(response.data['next']))          with self.assertNumQueries(2):              response = self.view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -146,7 +149,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          EXPECTED_NUM_QUERIES = 2 -        request = factory.get('/?decimal=15.20') +        request = factory.get('/', {'decimal': '15.20'})          with self.assertNumQueries(EXPECTED_NUM_QUERIES):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -155,7 +158,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          self.assertNotEqual(response.data['next'], None)          self.assertEqual(response.data['previous'], None) -        request = factory.get(response.data['next']) +        request = factory.get(*split_arguments_from_url(response.data['next']))          with self.assertNumQueries(EXPECTED_NUM_QUERIES):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -164,7 +167,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          self.assertEqual(response.data['next'], None)          self.assertNotEqual(response.data['previous'], None) -        request = factory.get(response.data['previous']) +        request = factory.get(*split_arguments_from_url(response.data['previous']))          with self.assertNumQueries(EXPECTED_NUM_QUERIES):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -191,7 +194,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          view = BasicFilterFieldsRootView.as_view() -        request = factory.get('/?decimal=15.20') +        request = factory.get('/', {'decimal': '15.20'})          with self.assertNumQueries(2):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -200,7 +203,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          self.assertNotEqual(response.data['next'], None)          self.assertEqual(response.data['previous'], None) -        request = factory.get(response.data['next']) +        request = factory.get(*split_arguments_from_url(response.data['next']))          with self.assertNumQueries(2):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -209,7 +212,7 @@ class IntegrationTestPaginationAndFiltering(TestCase):          self.assertEqual(response.data['next'], None)          self.assertNotEqual(response.data['previous'], None) -        request = factory.get(response.data['previous']) +        request = factory.get(*split_arguments_from_url(response.data['previous']))          with self.assertNumQueries(2):              response = view(request).render()          self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -317,7 +320,7 @@ class TestCustomPaginateByParam(TestCase):          """          If paginate_by_param is set, the new kwarg should limit per view requests.          """ -        request = factory.get('/?page_size=5') +        request = factory.get('/', {'page_size': 5})          response = self.view(request).render()          self.assertEqual(response.data['count'], 13)          self.assertEqual(response.data['results'], self.data[:5]) @@ -345,7 +348,7 @@ class TestMaxPaginateByParam(TestCase):          """          If max_paginate_by is set, it should limit page size for the view.          """ -        request = factory.get('/?page_size=10') +        request = factory.get('/', data={'page_size': 10})          response = self.view(request).render()          self.assertEqual(response.data['count'], 13)          self.assertEqual(response.data['results'], self.data[:5]) | 
