mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-23 22:49:50 +03:00
added tests for absolute url pagination
This commit is contained in:
parent
5b351567d8
commit
11375127e2
|
@ -4,7 +4,7 @@ from django.core.paginator import Paginator
|
|||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
from django.utils import unittest
|
||||
from rest_framework import generics, status, pagination, filters
|
||||
from rest_framework import generics, status, pagination, filters, serializers
|
||||
from rest_framework.compat import django_filters
|
||||
from rest_framework.tests.models import BasicModel, FilterableItem
|
||||
|
||||
|
@ -34,6 +34,23 @@ if django_filters:
|
|||
filter_backend = filters.DjangoFilterBackend
|
||||
|
||||
|
||||
class AbsoluteUrlsSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Serializer for testing absolute urls
|
||||
"""
|
||||
class Meta:
|
||||
use_absolute_urls = True
|
||||
|
||||
|
||||
class AbsoluteUrlsView(generics.ListAPIView):
|
||||
"""
|
||||
View for testing absolute urls
|
||||
"""
|
||||
model = BasicModel
|
||||
paginate_by = 1
|
||||
|
||||
|
||||
|
||||
class DefaultPageSizeKwargView(generics.ListAPIView):
|
||||
"""
|
||||
View for testing default paginate_by_param usage
|
||||
|
@ -173,6 +190,46 @@ class UnitTestPagination(TestCase):
|
|||
self.assertEquals(serializer.data['results'], self.objects[20:])
|
||||
|
||||
|
||||
class TestPaginationWithAbsoluteUrls(TestCase):
|
||||
"""
|
||||
Tests for using absolute urls
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
items = ['foo', 'bar', 'baz']
|
||||
for item in items:
|
||||
BasicModel(text=item).save()
|
||||
self.objects = BasicModel.objects
|
||||
self.data = [
|
||||
{'id': obj.id, 'text': obj.text}
|
||||
for obj in self.objects.all()
|
||||
]
|
||||
self.view = AbsoluteUrlsView.as_view()
|
||||
|
||||
def test_paginated_root_view_urls(self):
|
||||
"""
|
||||
Tests absolute/relative url switch
|
||||
"""
|
||||
request = factory.get('/')
|
||||
response = self.view(request).render()
|
||||
self.assertEquals(response.data['count'], 3)
|
||||
self.assertEquals(response.data['next'], 'http://testserver/?page=2')
|
||||
self.assertEquals(response.data['previous'], None)
|
||||
self.assertEquals(response.data['results'], self.data[0:1])
|
||||
request = factory.get('/?page=2')
|
||||
response = self.view(request).render()
|
||||
self.assertEquals(response.data['count'], 3)
|
||||
self.assertEquals(response.data['next'], 'http://testserver/?page=3')
|
||||
self.assertEquals(response.data['previous'], 'http://testserver/?page=1')
|
||||
self.assertEquals(response.data['results'], self.data[1:2])
|
||||
request = factory.get('/?page=3')
|
||||
response = self.view(request).render()
|
||||
self.assertEquals(response.data['count'], 3)
|
||||
self.assertEquals(response.data['next'], None)
|
||||
self.assertEquals(response.data['previous'], 'http://testserver/?page=2')
|
||||
self.assertEquals(response.data['results'], self.data[2:3])
|
||||
|
||||
|
||||
class TestUnpaginated(TestCase):
|
||||
"""
|
||||
Tests for list views without pagination.
|
||||
|
|
Loading…
Reference in New Issue
Block a user