From e35f0fd3c6203382bf8a8e93a6239a08b4f941ca Mon Sep 17 00:00:00 2001 From: pik Date: Sat, 21 May 2016 15:26:53 +0800 Subject: [PATCH] Add failing test for webform-input JSONField serializer --- tests/test_serializer.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 741c6ab17..774753613 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -7,13 +7,34 @@ import pytest from rest_framework import serializers from rest_framework.compat import unicode_repr - from .utils import MockObject # Tests for core functionality. # ----------------------------- +from rest_framework.parsers import FormParser, MultiPartParser +from rest_framework.request import Request +from rest_framework import fields +class TestSerialize: + def setup(self): + from rest_framework.test import APIRequestFactory + class DummyJSONSerializer(serializers.Serializer): + json_field = fields.JSONField() + self.factory = APIRequestFactory() + self.Serializer = DummyJSONSerializer + + def test_request_POST_with_form_content_JSONField(self): + data = b'-----------------------------20775962551482475149231161538\r\nContent-Disposition: form-data; name="json_field"\r\n\r\n{"a": true}\r\n-----------------------------20775962551482475149231161538--\r\n' + content_type = 'multipart/form-data; boundary=---------------------------20775962551482475149231161538' + wsgi_request = self.factory.generic('POST', '/', data, content_type) + request = Request(wsgi_request) + request.parsers = (FormParser(), MultiPartParser()) + serializer = self.Serializer(data=request.data) + assert serializer.is_valid(raise_exception=True) == True + assert dict(serializer.data)['json_field'] == {'a': True} + + class TestSerializer: def setup(self): class ExampleSerializer(serializers.Serializer):