[Python-experimental] Should accept float value serialized without decimal point (#6386)

* Mustache template should use invokerPackage tag to generate import

* A float may be serialized as an integer, e.g. '3' is a valid serialized float

* A float may be serialized as an integer, e.g. '3' is a valid serialized float

* add unit tests
This commit is contained in:
Sebastien Rosset
2020-05-21 18:59:31 -07:00
committed by GitHub
parent 3603dee3fb
commit 69177517ef
4 changed files with 24 additions and 0 deletions
@@ -229,6 +229,7 @@ COERCION_INDEX_BY_TYPE = {
UPCONVERSION_TYPE_PAIRS = (
(str, datetime),
(str, date),
(int, float), # A float may be serialized as an integer, e.g. '3' is a valid serialized float.
(list, ModelComposed),
(dict, ModelComposed),
(list, ModelNormal),
@@ -496,6 +496,7 @@ COERCION_INDEX_BY_TYPE = {
UPCONVERSION_TYPE_PAIRS = (
(str, datetime),
(str, date),
(int, float), # A float may be serialized as an integer, e.g. '3' is a valid serialized float.
(list, ModelComposed),
(dict, ModelComposed),
(list, ModelNormal),
@@ -496,6 +496,7 @@ COERCION_INDEX_BY_TYPE = {
UPCONVERSION_TYPE_PAIRS = (
(str, datetime),
(str, date),
(int, float), # A float may be serialized as an integer, e.g. '3' is a valid serialized float.
(list, ModelComposed),
(dict, ModelComposed),
(list, ModelNormal),
@@ -162,6 +162,27 @@ class DeserializationTests(unittest.TestCase):
self.assertEqual(deserialized.type, zebra_type)
self.assertEqual(deserialized.class_name, class_name)
def test_deserialize_float_value(self):
"""
Deserialize floating point values.
"""
data = {
'lengthCm': 3.1415
}
response = MockResponse(data=json.dumps(data))
deserialized = self.deserialize(response, (petstore_api.Banana,), True)
self.assertTrue(isinstance(deserialized, petstore_api.Banana))
self.assertEqual(deserialized.length_cm, 3.1415)
# Float value is serialized without decimal point
data = {
'lengthCm': 3
}
response = MockResponse(data=json.dumps(data))
deserialized = self.deserialize(response, (petstore_api.Banana,), True)
self.assertTrue(isinstance(deserialized, petstore_api.Banana))
self.assertEqual(deserialized.length_cm, 3.0)
def test_deserialize_fruit_null_value(self):
"""
deserialize fruit with null value.