@@ -885,6 +885,14 @@ def test_list_of_raw(self):
885
885
class WildcardFieldTest (BaseFieldTestMixin , FieldTestCase ):
886
886
field_class = partial (fields .Wildcard , fields .String )
887
887
888
+ def test_types (self ):
889
+ with pytest .raises (fields .MarshallingError ):
890
+ class WrongType :
891
+ pass
892
+ x = WrongType ()
893
+ field1 = fields .Wildcard (WrongType )
894
+ field2 = fields .Wildcard (x )
895
+
888
896
def test_defaults (self ):
889
897
field = fields .Wildcard (fields .String )
890
898
assert not field .required
@@ -925,6 +933,9 @@ def test_wildcard(self, api):
925
933
wild3 = fields .Wildcard (fields .String )
926
934
wild4 = fields .Wildcard (fields .String , default = 'x' )
927
935
wild5 = fields .Wildcard (fields .String )
936
+ wild6 = fields .Wildcard (fields .Integer )
937
+ wild7 = fields .Wildcard (fields .String )
938
+ wild8 = fields .Wildcard (fields .String )
928
939
929
940
mod5 = OrderedDict ()
930
941
mod5 ['toto' ] = fields .Integer
@@ -936,35 +947,74 @@ def test_wildcard(self, api):
936
947
wild_fields3 = api .model ('WildcardModel3' , {'*' : wild3 })
937
948
wild_fields4 = api .model ('WildcardModel4' , {'*' : wild4 })
938
949
wild_fields5 = api .model ('WildcardModel5' , mod5 )
950
+ wild_fields6 = api .model ('WildcardModel6' , {
951
+ 'nested' : {'f1' : fields .String (default = '12' ), 'f2' : fields .Integer (default = 13 )},
952
+ 'a*' : wild6
953
+ })
954
+ wild_fields7 = api .model ('WildcardModel7' , {'*' : wild7 })
955
+ wild_fields8 = api .model ('WildcardModel8' , {'*' : wild8 })
939
956
940
957
class Dummy (object ):
941
958
john = 12
942
959
bob = '42'
960
+ alice = None
943
961
944
962
class Dummy2 (object ):
945
963
pass
946
964
965
+ class Dummy3 (object ):
966
+ a = None
967
+ b = None
968
+
947
969
data = {'John' : 12 , 'bob' : 42 , 'Jane' : '68' }
948
970
data3 = Dummy ()
949
971
data4 = Dummy2 ()
950
972
data5 = {'John' : 12 , 'bob' : 42 , 'Jane' : '68' , 'toto' : '72' }
973
+ data6 = {'nested' : {'f1' : 12 , 'f2' : 13 }, 'alice' : '14' }
974
+ data7 = Dummy3 ()
975
+ data8 = None
951
976
expected1 = {'John' : '12' , 'bob' : '42' , 'Jane' : '68' }
952
977
expected2 = {'John' : 12 , 'Jane' : 68 }
953
978
expected3 = {'john' : '12' , 'bob' : '42' }
954
979
expected4 = {'*' : 'x' }
955
980
expected5 = {'John' : '12' , 'bob' : 42 , 'Jane' : '68' , 'toto' : 72 }
981
+ expected6 = {'nested' : {'f1' : '12' , 'f2' : 13 }, 'alice' : 14 }
982
+ expected7 = {}
983
+ expected8 = {}
956
984
957
985
result1 = api .marshal (data , wild_fields1 )
958
986
result2 = api .marshal (data , wild_fields2 )
959
987
result3 = api .marshal (data3 , wild_fields3 , skip_none = True )
960
988
result4 = api .marshal (data4 , wild_fields4 )
961
989
result5 = api .marshal (data5 , wild_fields5 )
990
+ result6 = api .marshal (data6 , wild_fields6 )
991
+ result7 = api .marshal (data7 , wild_fields7 , skip_none = True )
992
+ result8 = api .marshal (data8 , wild_fields7 , skip_none = True )
962
993
963
994
assert expected1 == result1
964
995
assert expected2 == result2
965
996
assert expected3 == result3
966
997
assert expected4 == result4
967
998
assert expected5 == result5
999
+ assert expected6 == result6
1000
+ assert expected7 == result7
1001
+ assert expected8 == result8
1002
+
1003
+ def test_clone (self , api ):
1004
+ wild1 = fields .Wildcard (fields .String )
1005
+ wild2 = wild1 .clone ()
1006
+
1007
+ wild_fields1 = api .model ('cloneWildcard1' , {'*' : wild1 })
1008
+ wild_fields2 = api .model ('cloneWildcard2' , {'*' : wild2 })
1009
+
1010
+ data = {'John' : 12 , 'bob' : 42 , 'Jane' : '68' }
1011
+ expected1 = {'John' : '12' , 'bob' : '42' , 'Jane' : '68' }
1012
+
1013
+ result1 = api .marshal (data , wild_fields1 )
1014
+ result2 = api .marshal (data , wild_fields2 )
1015
+
1016
+ assert expected1 == result1
1017
+ assert result2 == result1
968
1018
969
1019
970
1020
class ClassNameFieldTest (StringTestMixin , BaseFieldTestMixin , FieldTestCase ):
0 commit comments