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 | |
| parent | 43d3634e892e303ca377265d3176e8313f19563f (diff) | |
| download | django-rest-framework-6fa589fefd48d98e4f0a11548b6c3e5ced58e31e.tar.bz2 | |
Pagination support
Diffstat (limited to 'rest_framework/tests')
| -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)  | 
