Skip to content

Commit fed2f1b

Browse files
author
Oliver Sauder
committed
Convert non paginated response test to use APIClient
1 parent 2567515 commit fed2f1b

File tree

5 files changed

+15
-33
lines changed

5 files changed

+15
-33
lines changed

example/tests/conftest.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pytest
22
from pytest_factoryboy import register
3-
from rest_framework.test import APIClient, APIRequestFactory
3+
from rest_framework.test import APIClient
44

55
from example.factories import (
66
ArtProjectFactory,
@@ -62,8 +62,3 @@ def single_art_project(art_project_factory):
6262
@pytest.fixture
6363
def client():
6464
return APIClient()
65-
66-
67-
@pytest.fixture
68-
def rf():
69-
return APIRequestFactory()

example/tests/integration/test_non_paginated_responses.py

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
import pytest
22
from django.core.urlresolvers import reverse
33

4-
from rest_framework_json_api.pagination import PageNumberPagination
5-
6-
from example.tests.utils import load_json
7-
from example.views import EntryViewSet
8-
94
try:
105
from unittest import mock
116
except ImportError:
@@ -14,12 +9,11 @@
149
pytestmark = pytest.mark.django_db
1510

1611

17-
# rf == request_factory
1812
@mock.patch(
1913
'rest_framework_json_api.utils'
2014
'.get_default_included_resources_from_serializer',
2115
new=lambda s: [])
22-
def test_multiple_entries_no_pagination(multiple_entries, rf):
16+
def test_multiple_entries_no_pagination(multiple_entries, client):
2317

2418
expected = {
2519
"data": [
@@ -102,17 +96,6 @@ def test_multiple_entries_no_pagination(multiple_entries, rf):
10296
]
10397
}
10498

105-
class NoPagination(PageNumberPagination):
106-
page_size = None
107-
108-
class NonPaginatedEntryViewSet(EntryViewSet):
109-
pagination_class = NoPagination
110-
111-
request = rf.get(reverse("entry-list"))
112-
view = NonPaginatedEntryViewSet.as_view({'get': 'list'})
113-
response = view(request)
114-
response.render()
115-
116-
parsed_content = load_json(response.content)
99+
response = client.get(reverse("nopage-entry-list"))
117100

118-
assert expected == parsed_content
101+
assert expected == response.json()

example/tests/utils.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

example/urls_test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
CompanyViewset,
1313
EntryRelationshipView,
1414
EntryViewSet,
15+
NonPaginatedEntryViewSet,
1516
ProjectViewset
1617
)
1718

1819
router = routers.DefaultRouter(trailing_slash=False)
1920

2021
router.register(r'blogs', BlogViewSet)
2122
router.register(r'entries', EntryViewSet)
23+
router.register(r'nopage-entries', NonPaginatedEntryViewSet, 'nopage-entry')
2224
router.register(r'authors', AuthorViewSet)
2325
router.register(r'comments', CommentViewSet)
2426
router.register(r'companies', CompanyViewset)

example/views.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import rest_framework_json_api.metadata
66
import rest_framework_json_api.parsers
77
import rest_framework_json_api.renderers
8+
from rest_framework_json_api.pagination import PageNumberPagination
89
from rest_framework_json_api.utils import format_drf_errors
910
from rest_framework_json_api.views import ModelViewSet, RelationshipView
1011

@@ -68,6 +69,14 @@ def get_serializer_class(self):
6869
return EntrySerializer
6970

7071

72+
class NoPagination(PageNumberPagination):
73+
page_size = None
74+
75+
76+
class NonPaginatedEntryViewSet(EntryViewSet):
77+
pagination_class = NoPagination
78+
79+
7180
class AuthorViewSet(ModelViewSet):
7281
queryset = Author.objects.all()
7382
serializer_class = AuthorSerializer

0 commit comments

Comments
 (0)