| 717 | |
| 718 | |
| 719 | class BrowsableAPIRendererTests(URLPatternsTestCase): |
| 720 | class ExampleViewSet(ViewSet): |
| 721 | def list(self, request): |
| 722 | return Response() |
| 723 | |
| 724 | @action(detail=False, name="Extra list action") |
| 725 | def list_action(self, request): |
| 726 | raise NotImplementedError |
| 727 | |
| 728 | class AuthExampleViewSet(ExampleViewSet): |
| 729 | permission_classes = [permissions.IsAuthenticated] |
| 730 | |
| 731 | class SimpleSerializer(serializers.Serializer): |
| 732 | name = serializers.CharField() |
| 733 | |
| 734 | router = SimpleRouter() |
| 735 | router.register('examples', ExampleViewSet, basename='example') |
| 736 | router.register('auth-examples', AuthExampleViewSet, basename='auth-example') |
| 737 | urlpatterns = [path('api/', include(router.urls))] |
| 738 | |
| 739 | def setUp(self): |
| 740 | self.renderer = BrowsableAPIRenderer() |
| 741 | self.renderer.accepted_media_type = '' |
| 742 | self.renderer.renderer_context = {} |
| 743 | |
| 744 | def test_render_form_for_serializer(self): |
| 745 | with self.subTest('Serializer'): |
| 746 | serializer = BrowsableAPIRendererTests.SimpleSerializer(data={'name': 'Name'}) |
| 747 | form = self.renderer.render_form_for_serializer(serializer) |
| 748 | assert isinstance(form, str), 'Must return form for serializer' |
| 749 | |
| 750 | with self.subTest('ListSerializer'): |
| 751 | list_serializer = BrowsableAPIRendererTests.SimpleSerializer(data=[{'name': 'Name'}], many=True) |
| 752 | form = self.renderer.render_form_for_serializer(list_serializer) |
| 753 | assert form is None, 'Must not return form for list serializer' |
| 754 | |
| 755 | def test_get_raw_data_form(self): |
| 756 | with self.subTest('Serializer'): |
| 757 | class DummyGenericViewsetLike(APIView): |
| 758 | def get_serializer(self, **kwargs): |
| 759 | return BrowsableAPIRendererTests.SimpleSerializer(**kwargs) |
| 760 | |
| 761 | def get(self, request): |
| 762 | response = Response() |
| 763 | response.view = self |
| 764 | return response |
| 765 | |
| 766 | post = get |
| 767 | |
| 768 | view = DummyGenericViewsetLike.as_view() |
| 769 | _request = APIRequestFactory().get('/') |
| 770 | request = Request(_request) |
| 771 | response = view(_request) |
| 772 | view = response.view |
| 773 | |
| 774 | raw_data_form = self.renderer.get_raw_data_form({'name': 'Name'}, view, 'POST', request) |
| 775 | assert raw_data_form['_content'].initial == '{\n "name": ""\n}' |
| 776 |
nothing calls this directly
no test coverage detected