Skip to content

Commit d6981c6

Browse files
committed
improve test coverage
1 parent dc1783b commit d6981c6

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

tests/test_fields.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,14 @@ def test_list_of_raw(self):
885885
class WildcardFieldTest(BaseFieldTestMixin, FieldTestCase):
886886
field_class = partial(fields.Wildcard, fields.String)
887887

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+
888896
def test_defaults(self):
889897
field = fields.Wildcard(fields.String)
890898
assert not field.required
@@ -925,6 +933,9 @@ def test_wildcard(self, api):
925933
wild3 = fields.Wildcard(fields.String)
926934
wild4 = fields.Wildcard(fields.String, default='x')
927935
wild5 = fields.Wildcard(fields.String)
936+
wild6 = fields.Wildcard(fields.Integer)
937+
wild7 = fields.Wildcard(fields.String)
938+
wild8 = fields.Wildcard(fields.String)
928939

929940
mod5 = OrderedDict()
930941
mod5['toto'] = fields.Integer
@@ -936,35 +947,74 @@ def test_wildcard(self, api):
936947
wild_fields3 = api.model('WildcardModel3', {'*': wild3})
937948
wild_fields4 = api.model('WildcardModel4', {'*': wild4})
938949
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})
939956

940957
class Dummy(object):
941958
john = 12
942959
bob = '42'
960+
alice = None
943961

944962
class Dummy2(object):
945963
pass
946964

965+
class Dummy3(object):
966+
a = None
967+
b = None
968+
947969
data = {'John': 12, 'bob': 42, 'Jane': '68'}
948970
data3 = Dummy()
949971
data4 = Dummy2()
950972
data5 = {'John': 12, 'bob': 42, 'Jane': '68', 'toto': '72'}
973+
data6 = {'nested': {'f1': 12, 'f2': 13}, 'alice': '14'}
974+
data7 = Dummy3()
975+
data8 = None
951976
expected1 = {'John': '12', 'bob': '42', 'Jane': '68'}
952977
expected2 = {'John': 12, 'Jane': 68}
953978
expected3 = {'john': '12', 'bob': '42'}
954979
expected4 = {'*': 'x'}
955980
expected5 = {'John': '12', 'bob': 42, 'Jane': '68', 'toto': 72}
981+
expected6 = {'nested': {'f1': '12', 'f2': 13}, 'alice': 14}
982+
expected7 = {}
983+
expected8 = {}
956984

957985
result1 = api.marshal(data, wild_fields1)
958986
result2 = api.marshal(data, wild_fields2)
959987
result3 = api.marshal(data3, wild_fields3, skip_none=True)
960988
result4 = api.marshal(data4, wild_fields4)
961989
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)
962993

963994
assert expected1 == result1
964995
assert expected2 == result2
965996
assert expected3 == result3
966997
assert expected4 == result4
967998
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
9681018

9691019

9701020
class ClassNameFieldTest(StringTestMixin, BaseFieldTestMixin, FieldTestCase):

tests/test_marshalling.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def test_marshal_with_skip_none(self):
4747
def test_marshal_wildcard_with_skip_none(self):
4848
wild = fields.Wildcard(fields.String)
4949
model = OrderedDict([('foo', fields.Raw), ('*', wild)])
50-
marshal_dict = OrderedDict([('foo', None), ('bat', None), ('baz', 'biz')])
50+
marshal_dict = OrderedDict([('foo', None), ('bat', None), ('baz', 'biz'), ('bar', None)])
5151
output = marshal(marshal_dict, model, skip_none=True)
5252
assert output == {'baz': 'biz'}
5353

0 commit comments

Comments
 (0)