forked from loafle/openapi-generator-original
[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:
Vendored
+1
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user