Merge "Add dict as basic type"
This commit is contained in:
commit
1fcc1563e2
@ -125,3 +125,17 @@ class List(object):
|
|||||||
return [self.type.validate(v) for v in value]
|
return [self.type.validate(v) for v in value]
|
||||||
except Exception:
|
except Exception:
|
||||||
raise ValueError("Failed to validate received value")
|
raise ValueError("Failed to validate received value")
|
||||||
|
|
||||||
|
|
||||||
|
class Dict(object):
|
||||||
|
type_name = 'Dict'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def validate(cls, value, default={}):
|
||||||
|
if value is None:
|
||||||
|
value = default
|
||||||
|
|
||||||
|
if not isinstance(value, dict):
|
||||||
|
raise ValueError("Failed to validate received value")
|
||||||
|
|
||||||
|
return value
|
||||||
|
@ -145,3 +145,20 @@ class TestTypes(TestCase):
|
|||||||
self.assertIsInstance(value, list)
|
self.assertIsInstance(value, list)
|
||||||
self.assertIsInstance(value[0], TestAPI)
|
self.assertIsInstance(value[0], TestAPI)
|
||||||
self.assertEqual({'test': 'test_value'}, value[0].as_dict())
|
self.assertEqual({'test': 'test_value'}, value[0].as_dict())
|
||||||
|
|
||||||
|
def test_dict_type(self):
|
||||||
|
# Test default value
|
||||||
|
self.assertEqual({}, types.Dict.validate(None))
|
||||||
|
self.assertEqual({}, types.Dict.validate(None, default={}))
|
||||||
|
|
||||||
|
# Test validate successfully
|
||||||
|
self.assertEqual({"abc": "xyz"}, types.Dict.validate({"abc": "xyz"}))
|
||||||
|
self.assertEqual({}, types.Dict.validate({}))
|
||||||
|
|
||||||
|
# Test validate failed
|
||||||
|
self.assertRaises(ValueError,
|
||||||
|
types.Dict.validate, "test")
|
||||||
|
self.assertRaises(ValueError,
|
||||||
|
types.Dict.validate, 123)
|
||||||
|
self.assertRaises(ValueError,
|
||||||
|
types.Dict.validate, [])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user