Skip to content

Commit 77613fe

Browse files
author
i.donchev
committed
Adding tests to for many=True
1 parent 954d94c commit 77613fe

File tree

5 files changed

+37
-10
lines changed

5 files changed

+37
-10
lines changed

rest_framework_docs/templates/rest_framework_docs/components/fields_list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{% endif %}
88

99
{% if field.to_many_relation %}
10-
<span class="label label-primary label-required" title="Required">many = True</span>
10+
<span class="label label-primary label-required" title="Support sending several objects of this type in a request ({{obj}, {obj}, ... })">Array of objects</span>
1111
{% endif %}
1212

1313
{% if field.sub_fields %}

tests/serializers.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,26 @@ class Meta:
3434
extra_kwargs = {'password': {'write_only': True}}
3535

3636

37+
class MembershipSerializer(serializers.ModelSerializer):
38+
class Meta:
39+
model = Membership
40+
fields = ('joined', 'is_owner', 'role')
41+
42+
3743
class CreateOrganisationSerializer(serializers.ModelSerializer):
44+
membership_set = MembershipSerializer(many=True)
45+
46+
class Meta:
47+
model = Organisation
48+
fields = ('name', 'slug', 'membership_set')
49+
50+
51+
class RetrieveOrganisationSerializer(serializers.ModelSerializer):
52+
membership_set = MembershipSerializer()
3853

3954
class Meta:
4055
model = Organisation
41-
fields = ('name', 'slug',)
56+
fields = ('name', 'slug', 'is_active', 'membership_set')
4257

4358

4459
class OrganisationMembersSerializer(serializers.ModelSerializer):

tests/tests.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_index_view_with_endpoints(self):
2727
response = self.client.get(reverse('drfdocs'))
2828

2929
self.assertEqual(response.status_code, 200)
30-
self.assertEqual(len(response.context["endpoints"]), 14)
30+
self.assertEqual(len(response.context["endpoints"]), 15)
3131

3232
# Test the login view
3333
self.assertEqual(response.context["endpoints"][0].name_parent, "accounts")
@@ -72,9 +72,12 @@ def test_model_viewset(self):
7272
response = self.client.get(reverse('drfdocs'))
7373

7474
self.assertEqual(response.status_code, 200)
75-
self.assertEqual(response.context["endpoints"][10].path, '/organisation-model-viewsets/')
76-
self.assertEqual(response.context["endpoints"][11].path, '/organisation-model-viewsets/<pk>/')
77-
self.assertEqual(response.context["endpoints"][10].allowed_methods, ['GET', 'POST', 'OPTIONS'])
78-
self.assertEqual(response.context["endpoints"][11].allowed_methods, ['GET', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'])
79-
self.assertEqual(response.context["endpoints"][12].allowed_methods, ['POST', 'OPTIONS'])
80-
self.assertEqual(response.context["endpoints"][12].docstring, 'This is a test.')
75+
76+
self.assertEqual(response.context["endpoints"][10].path, '/organisations/<slug>/')
77+
self.assertEqual(response.context['endpoints'][6].fields[2]['to_many_relation'], True)
78+
self.assertEqual(response.context["endpoints"][11].path, '/organisation-model-viewsets/')
79+
self.assertEqual(response.context["endpoints"][12].path, '/organisation-model-viewsets/<pk>/')
80+
self.assertEqual(response.context["endpoints"][11].allowed_methods, ['GET', 'POST', 'OPTIONS'])
81+
self.assertEqual(response.context["endpoints"][12].allowed_methods, ['GET', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'])
82+
self.assertEqual(response.context["endpoints"][13].allowed_methods, ['POST', 'OPTIONS'])
83+
self.assertEqual(response.context["endpoints"][13].docstring, 'This is a test.')

tests/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
url(r'^create/$', view=views.CreateOrganisationView.as_view(), name="create"),
2323
url(r'^(?P<slug>[\w-]+)/members/$', view=views.OrganisationMembersView.as_view(), name="members"),
2424
url(r'^(?P<slug>[\w-]+)/leave/$', view=views.LeaveOrganisationView.as_view(), name="leave"),
25-
url(r'^(?P<slug>[\w-]+)/errored/$', view=views.OrganisationErroredView.as_view(), name="errored")
25+
url(r'^(?P<slug>[\w-]+)/errored/$', view=views.OrganisationErroredView.as_view(), name="errored"),
26+
url(r'^(?P<slug>[\w-]+)/$', view=views.RetrieveOrganisationView.as_view(), name="organisation"),
2627
]
2728

2829
router = SimpleRouter()

tests/views.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,11 @@ class TestModelViewSet(ModelViewSet):
144144
def test_route(self, request):
145145
"""This is a test."""
146146
return Response()
147+
148+
149+
class RetrieveOrganisationView(generics.RetrieveAPIView):
150+
151+
serializer_class = serializers.RetrieveOrganisationSerializer
152+
153+
def get_object(self):
154+
pass

0 commit comments

Comments
 (0)