diff options
| author | Tom Christie | 2013-01-26 20:55:09 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-01-26 20:55:09 +0000 |
| commit | 4d43e9f7def1ee3a3b37635dbd8487ee7ca61132 (patch) | |
| tree | 187895168739cbd36bcc091854de3464d7195556 | |
| parent | a51bca32fd26ae954228b9026b18ebeea81ad8e2 (diff) | |
| download | django-rest-framework-4d43e9f7def1ee3a3b37635dbd8487ee7ca61132.tar.bz2 | |
Test for custom pagination serializers. Also refs #604.
| -rw-r--r-- | rest_framework/tests/pagination.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/rest_framework/tests/pagination.py b/rest_framework/tests/pagination.py index e2492958..697dfb5b 100644 --- a/rest_framework/tests/pagination.py +++ b/rest_framework/tests/pagination.py @@ -252,6 +252,8 @@ class TestCustomPaginateByParam(TestCase): self.assertEquals(response.data['results'], self.data[:5]) +### Tests for context in pagination serializers + class CustomField(serializers.Field): def to_native(self, value): if not 'view' in self.context: @@ -283,3 +285,40 @@ class TestContextPassedToCustomField(TestCase): response = self.view(request).render() self.assertEquals(response.status_code, status.HTTP_200_OK) + + +### Tests for custom pagination serializers + +class LinksSerializer(serializers.Serializer): + next = pagination.NextPageField(source='*') + prev = pagination.PreviousPageField(source='*') + + +class CustomPaginationSerializer(pagination.BasePaginationSerializer): + links = LinksSerializer(source='*') # Takes the page object as the source + total_results = serializers.Field(source='paginator.count') + + results_field = 'objects' + + +class TestCustomPaginationSerializer(TestCase): + def setUp(self): + objects = ['john', 'paul', 'george', 'ringo'] + paginator = Paginator(objects, 2) + self.page = paginator.page(1) + + def test_custom_pagination_serializer(self): + request = RequestFactory().get('/foobar') + serializer = CustomPaginationSerializer( + instance=self.page, + context={'request': request} + ) + expected = { + 'links': { + 'next': 'http://testserver/foobar?page=2', + 'prev': None + }, + 'total_results': 4, + 'objects': ['john', 'paul'] + } + self.assertEquals(serializer.data, expected) |
