@@ -633,13 +633,72 @@ def list_action(self, request):
633
633
class AuthExampleViewSet (ExampleViewSet ):
634
634
permission_classes = [permissions .IsAuthenticated ]
635
635
636
+ class SimpleSerializer (serializers .Serializer ):
637
+ name = serializers .CharField ()
638
+
636
639
router = SimpleRouter ()
637
640
router .register ('examples' , ExampleViewSet , basename = 'example' )
638
641
router .register ('auth-examples' , AuthExampleViewSet , basename = 'auth-example' )
639
642
urlpatterns = [path ('api/' , include (router .urls ))]
640
643
641
644
def setUp (self ):
642
645
self .renderer = BrowsableAPIRenderer ()
646
+ self .renderer .accepted_media_type = ''
647
+ self .renderer .renderer_context = {}
648
+
649
+ def test_render_form_for_serializer (self ):
650
+ with self .subTest ('Serializer' ):
651
+ serializer = BrowsableAPIRendererTests .SimpleSerializer (data = {'name' : 'Name' })
652
+ form = self .renderer .render_form_for_serializer (serializer )
653
+ assert isinstance (form , str ), 'Must return form for serializer'
654
+
655
+ with self .subTest ('ListSerializer' ):
656
+ list_serializer = BrowsableAPIRendererTests .SimpleSerializer (data = [{'name' : 'Name' }], many = True )
657
+ form = self .renderer .render_form_for_serializer (list_serializer )
658
+ assert form is None , 'Must not return form for list serializer'
659
+
660
+ def test_get_raw_data_form (self ):
661
+ with self .subTest ('Serializer' ):
662
+ class DummyGenericViewsetLike (APIView ):
663
+ def get_serializer (self , ** kwargs ):
664
+ return BrowsableAPIRendererTests .SimpleSerializer (** kwargs )
665
+
666
+ def get (self , request ):
667
+ response = Response ()
668
+ response .view = self
669
+ return response
670
+
671
+ post = get
672
+
673
+ view = DummyGenericViewsetLike .as_view ()
674
+ _request = APIRequestFactory ().get ('/' )
675
+ request = Request (_request )
676
+ response = view (_request )
677
+ view = response .view
678
+
679
+ raw_data_form = self .renderer .get_raw_data_form ({'name' : 'Name' }, view , 'POST' , request )
680
+ assert raw_data_form ['_content' ].initial == '{\n "name": ""\n }'
681
+
682
+ with self .subTest ('ListSerializer' ):
683
+ class DummyGenericViewsetLike (APIView ):
684
+ def get_serializer (self , ** kwargs ):
685
+ return BrowsableAPIRendererTests .SimpleSerializer (many = True , ** kwargs ) # returns ListSerializer
686
+
687
+ def get (self , request ):
688
+ response = Response ()
689
+ response .view = self
690
+ return response
691
+
692
+ post = get
693
+
694
+ view = DummyGenericViewsetLike .as_view ()
695
+ _request = APIRequestFactory ().get ('/' )
696
+ request = Request (_request )
697
+ response = view (_request )
698
+ view = response .view
699
+
700
+ raw_data_form = self .renderer .get_raw_data_form ([{'name' : 'Name' }], view , 'POST' , request )
701
+ assert raw_data_form ['_content' ].initial == '[\n {\n "name": ""\n }\n ]'
643
702
644
703
def test_get_description_returns_empty_string_for_401_and_403_statuses (self ):
645
704
assert self .renderer .get_description ({}, status_code = 401 ) == ''
0 commit comments