88from django .test import TestCase , override_settings
99from django .urls import path
1010
11- from rest_framework import fields , parsers , serializers
11+ from rest_framework import fields , parsers , renderers , serializers , status
1212from rest_framework .authtoken .models import Token
13- from rest_framework .decorators import api_view , parser_classes
13+ from rest_framework .decorators import api_view , parser_classes , renderer_classes
1414from rest_framework .response import Response
1515from rest_framework .test import (
1616 APIClient , APIRequestFactory , URLPatternsTestCase , force_authenticate
@@ -55,6 +55,10 @@ class BasicSerializer(serializers.Serializer):
5555def post_json_view (request ):
5656 return Response (request .data )
5757
58+ @api_view (['DELETE' ])
59+ @renderer_classes ((renderers .JSONRenderer , ))
60+ def delete_json_view (request ):
61+ return Response (status = status .HTTP_204_NO_CONTENT )
5862
5963@api_view (['POST' ])
6064def post_view (request ):
@@ -69,6 +73,7 @@ def post_view(request):
6973 path ('redirect-view/' , redirect_view ),
7074 path ('redirect-view/<int:code>/' , redirect_307_308_view ),
7175 path ('post-json-view/' , post_json_view ),
76+ path ('delete-json-view/' , delete_json_view ),
7277 path ('post-view/' , post_view ),
7378]
7479
@@ -254,6 +259,11 @@ def test_post_encodes_data_based_on_json_content_type(self):
254259 assert response .status_code == 200
255260 assert response .data == data
256261
262+ def test_delete_based_on_format (self ):
263+ response = self .client .delete ('/delete-json-view/' , format = 'json' )
264+ assert response .status_code == status .HTTP_204_NO_CONTENT
265+ assert response .data is None
266+
257267
258268class TestAPIRequestFactory (TestCase ):
259269 def test_csrf_exempt_by_default (self ):
0 commit comments