@@ -215,25 +215,47 @@ 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
+ assert serializer .is_valid ()
249
+ assert serializer .validated_data == {'message' : '' }
250
+
251
+ def test_empty_html_required_false (self ):
252
+ class TestSerializer (serializers .Serializer ):
253
+ message = serializers .CharField (required = False )
254
+
255
+ serializer = TestSerializer (data = MockHTMLDict ())
256
+ assert serializer .is_valid ()
257
+ assert serializer .validated_data == {}
258
+
237
259
238
260
class TestCreateOnlyDefault :
239
261
def setup (self ):
0 commit comments