Update python client.

Add test case for nested dict deserialization.
This commit is contained in:
geekerzp 2015-07-28 14:34:50 +08:00
parent 8bd282acd6
commit ea901bf1ce
2 changed files with 14 additions and 1 deletions

View File

@ -253,7 +253,7 @@ class ApiClient(object):
for sub_data in data] for sub_data in data]
if 'dict(' in klass: if 'dict(' in klass:
sub_kls = re.match('dict\((.*), (.*)\)', klass).group(2) sub_kls = re.match('dict\(([^,]*), (.*)\)', klass).group(2)
return {k: self.__deserialize(v, sub_kls) return {k: self.__deserialize(v, sub_kls)
for k, v in iteritems(data)} for k, v in iteritems(data)}

View File

@ -150,6 +150,19 @@ class DeserializationTests(unittest.TestCase):
self.assertEqual(deserialized[0].name, "doggie0") self.assertEqual(deserialized[0].name, "doggie0")
self.assertEqual(deserialized[1].name, "doggie1") self.assertEqual(deserialized[1].name, "doggie1")
def test_deserialize_nested_dict(self):
""" deserialize dict(str, dict(str, int)) """
data = {
"foo": {
"bar": 1
}
}
deserialized = self.deserialize(data, "dict(str, dict(str, int))")
self.assertTrue(isinstance(deserialized, dict))
self.assertTrue(isinstance(deserialized["foo"], dict))
self.assertTrue(isinstance(deserialized["foo"]["bar"], int))
def test_deserialize_none(self): def test_deserialize_none(self):
""" deserialize None """ """ deserialize None """
deserialized = self.deserialize(None, "datetime") deserialized = self.deserialize(None, "datetime")