@@ -215,25 +215,49 @@ class MockHTMLDict(dict):
215
215
assert serializer .validated_data == {'archived' : False }
216
216
217
217
218
+ class MockHTMLDict (dict ):
219
+ """
220
+ This class mocks up a dictionary like object, that behaves
221
+ as if it was returned for multipart or urlencoded data.
222
+ """
223
+ getlist = None
224
+
225
+
218
226
class TestCharHTMLInput :
219
- def setup (self ):
227
+ def test_empty_html_checkbox (self ):
220
228
class TestSerializer (serializers .Serializer ):
221
229
message = serializers .CharField (default = 'happy' )
222
- self .Serializer = TestSerializer
223
230
224
- def test_empty_html_checkbox (self ):
225
- """
226
- HTML checkboxes do not send any value, but should be treated
227
- as `False` by BooleanField.
228
- """
229
- # This class mocks up a dictionary like object, that behaves
230
- # as if it was returned for multipart or urlencoded data.
231
- class MockHTMLDict (dict ):
232
- getlist = None
233
- serializer = self .Serializer (data = MockHTMLDict ())
231
+ serializer = TestSerializer (data = MockHTMLDict ())
234
232
assert serializer .is_valid ()
235
233
assert serializer .validated_data == {'message' : 'happy' }
236
234
235
+ def test_empty_html_checkbox_allow_null (self ):
236
+ class TestSerializer (serializers .Serializer ):
237
+ message = serializers .CharField (allow_null = True )
238
+
239
+ serializer = TestSerializer (data = MockHTMLDict ())
240
+ assert serializer .is_valid ()
241
+ assert serializer .validated_data == {'message' : None }
242
+
243
+ def test_empty_html_checkbox_allow_null_allow_blank (self ):
244
+ class TestSerializer (serializers .Serializer ):
245
+ message = serializers .CharField (allow_null = True , allow_blank = True )
246
+
247
+ serializer = TestSerializer (data = MockHTMLDict ({}))
248
+ print serializer .is_valid ()
249
+ print serializer .errors
250
+ assert serializer .is_valid ()
251
+ assert serializer .validated_data == {'message' : '' }
252
+
253
+ def test_empty_html_required_false (self ):
254
+ class TestSerializer (serializers .Serializer ):
255
+ message = serializers .CharField (required = False )
256
+
257
+ serializer = TestSerializer (data = MockHTMLDict ())
258
+ assert serializer .is_valid ()
259
+ assert serializer .validated_data == {}
260
+
237
261
238
262
class TestCreateOnlyDefault :
239
263
def setup (self ):
0 commit comments