4
4
5
5
import django
6
6
import pytest
7
+ from django .http import QueryDict
7
8
from django .utils import timezone
8
9
9
10
import rest_framework
@@ -224,14 +225,6 @@ def test_invalid_error_key(self):
224
225
assert str (exc_info .value ) == expected
225
226
226
227
227
- class MockHTMLDict (dict ):
228
- """
229
- This class mocks up a dictionary like object, that behaves
230
- as if it was returned for multipart or urlencoded data.
231
- """
232
- getlist = None
233
-
234
-
235
228
class TestBooleanHTMLInput :
236
229
def setup (self ):
237
230
class TestSerializer (serializers .Serializer ):
@@ -245,7 +238,7 @@ def test_empty_html_checkbox(self):
245
238
"""
246
239
# This class mocks up a dictionary like object, that behaves
247
240
# as if it was returned for multipart or urlencoded data.
248
- serializer = self .Serializer (data = MockHTMLDict ( ))
241
+ serializer = self .Serializer (data = QueryDict ( '' ))
249
242
assert serializer .is_valid ()
250
243
assert serializer .validated_data == {'archived' : False }
251
244
@@ -255,39 +248,63 @@ def test_empty_html_charfield(self):
255
248
class TestSerializer (serializers .Serializer ):
256
249
message = serializers .CharField (default = 'happy' )
257
250
258
- serializer = TestSerializer (data = MockHTMLDict ( ))
251
+ serializer = TestSerializer (data = QueryDict ( '' ))
259
252
assert serializer .is_valid ()
260
253
assert serializer .validated_data == {'message' : 'happy' }
261
254
255
+ def test_empty_html_integerfield (self ):
256
+ class TestSerializer (serializers .Serializer ):
257
+ message = serializers .IntegerField (default = 123 )
258
+
259
+ serializer = TestSerializer (data = QueryDict ('message=' ))
260
+ assert serializer .is_valid ()
261
+ assert serializer .validated_data == {'message' : 123 }
262
+
263
+ def test_empty_html_uuidfield_with_default (self ):
264
+ class TestSerializer (serializers .Serializer ):
265
+ message = serializers .UUIDField (default = uuid .uuid4 )
266
+
267
+ serializer = TestSerializer (data = QueryDict ('message=' ))
268
+ assert serializer .is_valid ()
269
+ assert list (serializer .validated_data .keys ()) == ['message' ]
270
+
271
+ def test_empty_html_uuidfield_with_optional (self ):
272
+ class TestSerializer (serializers .Serializer ):
273
+ message = serializers .UUIDField (required = False )
274
+
275
+ serializer = TestSerializer (data = QueryDict ('message=' ))
276
+ assert serializer .is_valid ()
277
+ assert list (serializer .validated_data .keys ()) == []
278
+
262
279
def test_empty_html_charfield_allow_null (self ):
263
280
class TestSerializer (serializers .Serializer ):
264
281
message = serializers .CharField (allow_null = True )
265
282
266
- serializer = TestSerializer (data = MockHTMLDict ({ 'message' : '' } ))
283
+ serializer = TestSerializer (data = QueryDict ( 'message=' ))
267
284
assert serializer .is_valid ()
268
285
assert serializer .validated_data == {'message' : None }
269
286
270
287
def test_empty_html_datefield_allow_null (self ):
271
288
class TestSerializer (serializers .Serializer ):
272
289
expiry = serializers .DateField (allow_null = True )
273
290
274
- serializer = TestSerializer (data = MockHTMLDict ({ 'expiry' : '' } ))
291
+ serializer = TestSerializer (data = QueryDict ( 'expiry=' ))
275
292
assert serializer .is_valid ()
276
293
assert serializer .validated_data == {'expiry' : None }
277
294
278
295
def test_empty_html_charfield_allow_null_allow_blank (self ):
279
296
class TestSerializer (serializers .Serializer ):
280
297
message = serializers .CharField (allow_null = True , allow_blank = True )
281
298
282
- serializer = TestSerializer (data = MockHTMLDict ({ 'message' : '' } ))
299
+ serializer = TestSerializer (data = QueryDict ( 'message=' ))
283
300
assert serializer .is_valid ()
284
301
assert serializer .validated_data == {'message' : '' }
285
302
286
303
def test_empty_html_charfield_required_false (self ):
287
304
class TestSerializer (serializers .Serializer ):
288
305
message = serializers .CharField (required = False )
289
306
290
- serializer = TestSerializer (data = MockHTMLDict ( ))
307
+ serializer = TestSerializer (data = QueryDict ( '' ))
291
308
assert serializer .is_valid ()
292
309
assert serializer .validated_data == {}
293
310
@@ -1116,8 +1133,6 @@ class TestMultipleChoiceField(FieldValues):
1116
1133
)
1117
1134
1118
1135
def test_against_partial_and_full_updates (self ):
1119
- # serializer = self.Serializer(data=MockHTMLDict())
1120
- from django .http import QueryDict
1121
1136
field = serializers .MultipleChoiceField (choices = (('a' , 'a' ), ('b' , 'b' )))
1122
1137
field .partial = False
1123
1138
assert field .get_value (QueryDict ({})) == []
0 commit comments