@@ -29,48 +29,48 @@ class SimpleModel(Model):
29
29
test_tuple : Tuple [str ]
30
30
31
31
32
+ def test_serialize_partially_skip_missing_field ():
33
+ serialized = SimpleModel .serialize_partially ({"unknown" : "test" })
34
+ assert serialized ["unknown" ] == "test"
35
+
36
+
32
37
parameters = [
33
- (st .text , [], {}, "test_str" , None ),
34
- (st .integers , [], {}, "test_int" , None ),
35
- (st .floats , [], {"allow_nan" : False }, "test_float" , None ),
36
- (st .dates , [], {}, "test_date" , lambda x : json .dumps (x .isoformat ())),
37
- (st .datetimes , [], {}, "test_datetime" , lambda x : json .dumps (x .isoformat ())),
38
- (st .ip_addresses , [], {"v" : 4 }, "test_ip_v4" , lambda x : json .dumps (str (x ))),
39
- (st .ip_addresses , [], {"v" : 6 }, "test_ip_v4" , lambda x : json .dumps (str (x ))),
40
- (
41
- st .lists ,
42
- [st .tuples (st .integers (), st .floats ())],
43
- {},
44
- "test_list" ,
45
- lambda x : json .dumps (x ),
46
- ),
38
+ (st .text , [], {}, "test_str" , str , False ),
39
+ (st .dates , [], {}, "test_date" , str , False ),
40
+ (st .datetimes , [], {}, "test_datetime" , str , False ),
41
+ (st .ip_addresses , [], {"v" : 4 }, "test_ip_v4" , str , False ),
42
+ (st .ip_addresses , [], {"v" : 6 }, "test_ip_v4" , str , False ),
43
+ (st .lists , [st .tuples (st .integers (), st .floats ())], {}, "test_list" , str , False ),
47
44
(
48
45
st .dictionaries ,
49
46
[st .text (), st .tuples (st .integers (), st .floats ())],
50
47
{},
51
48
"test_dict" ,
52
- lambda x : json .dumps (x ),
49
+ str ,
50
+ False ,
53
51
),
54
- (st .tuples , [st .text ()], {}, "test_tuple" , lambda x : json .dumps (x )),
52
+ (st .tuples , [st .text ()], {}, "test_tuple" , str , False ),
53
+ (st .floats , [], {"allow_nan" : False }, "test_float" , float , True ),
54
+ (st .integers , [], {}, "test_int" , int , True ),
55
55
]
56
56
57
57
58
58
@pytest .mark .parametrize (
59
- "strategy, strategy_args, strategy_kwargs, model_field, serialize_callable " ,
59
+ "strategy, strategy_args, strategy_kwargs, model_field, expected_type, equality_expected " ,
60
60
parameters ,
61
61
)
62
62
@given (st .data ())
63
63
def test_serialize_partially (
64
- strategy , strategy_args , strategy_kwargs , model_field , serialize_callable , data
64
+ strategy ,
65
+ strategy_args ,
66
+ strategy_kwargs ,
67
+ model_field ,
68
+ expected_type ,
69
+ equality_expected ,
70
+ data ,
65
71
):
66
72
value = data .draw (strategy (* strategy_args , ** strategy_kwargs ))
67
73
serialized = SimpleModel .serialize_partially ({model_field : value })
68
- if serialize_callable is None :
69
- assert serialized [model_field ] == value
70
- else :
71
- assert serialized [model_field ] == serialize_callable (value )
72
-
73
-
74
- def test_serialize_partially_skip_missing_filed ():
75
- serialized = SimpleModel .serialize_partially ({"unknown" : "test" })
76
- assert serialized ["unknown" ] == "test"
74
+ assert isinstance (serialized .get (model_field ), expected_type )
75
+ if equality_expected :
76
+ assert serialized .get (model_field ) == value
0 commit comments