added tests for absolute url pagination

This commit is contained in:
Stephan Groß 2012-12-13 10:40:05 +01:00
parent 5b351567d8
commit 11375127e2

View File

@ -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.