diff options
| author | Tom Christie | 2012-09-30 17:31:28 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-09-30 17:31:28 +0100 |
| commit | 6fa589fefd48d98e4f0a11548b6c3e5ced58e31e (patch) | |
| tree | a5d1dd75ce6d5c5be7bf81b386a29c13235d33ff /rest_framework/tests/pagination.py | |
| parent | 43d3634e892e303ca377265d3176e8313f19563f (diff) | |
| download | django-rest-framework-6fa589fefd48d98e4f0a11548b6c3e5ced58e31e.tar.bz2 | |
Pagination support
Diffstat (limited to 'rest_framework/tests/pagination.py')
| -rw-r--r-- | rest_framework/tests/pagination.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/rest_framework/tests/pagination.py b/rest_framework/tests/pagination.py new file mode 100644 index 00000000..4ddfc915 --- /dev/null +++ b/rest_framework/tests/pagination.py @@ -0,0 +1,57 @@ +from django.test import TestCase +from django.test.client import RequestFactory +from rest_framework import generics, status +from rest_framework.tests.models import BasicModel + +factory = RequestFactory() + + +class RootView(generics.RootAPIView): + """ + Example description for OPTIONS. + """ + model = BasicModel + paginate_by = 10 + + +class TestPaginatedView(TestCase): + def setUp(self): + """ + Create 26 BasicModel intances. + """ + for char in 'abcdefghijklmnopqrstuvwxyz': + BasicModel(text=char * 3).save() + self.objects = BasicModel.objects + self.data = [ + {'id': obj.id, 'text': obj.text} + for obj in self.objects.all() + ] + self.view = RootView.as_view() + + def test_get_paginated_root_view(self): + """ + GET requests to paginated RootAPIView should return paginated results. + """ + request = factory.get('/') + response = self.view(request).render() + self.assertEquals(response.status_code, status.HTTP_200_OK) + self.assertEquals(response.data['count'], 26) + self.assertEquals(response.data['results'], self.data[:10]) + self.assertNotEquals(response.data['next'], None) + self.assertEquals(response.data['previous'], None) + + request = factory.get(response.data['next']) + response = self.view(request).render() + self.assertEquals(response.status_code, status.HTTP_200_OK) + self.assertEquals(response.data['count'], 26) + self.assertEquals(response.data['results'], self.data[10:20]) + self.assertNotEquals(response.data['next'], None) + self.assertNotEquals(response.data['previous'], None) + + request = factory.get(response.data['next']) + response = self.view(request).render() + self.assertEquals(response.status_code, status.HTTP_200_OK) + self.assertEquals(response.data['count'], 26) + self.assertEquals(response.data['results'], self.data[20:]) + self.assertEquals(response.data['next'], None) + self.assertNotEquals(response.data['previous'], None) |
