Fix default handling for zero values
When int and float arguments to controllers default to zero and no value is provided in the request, the controller is being passed None instead of 0. Closes-bug: #1291084 Change-Id: I35c034e4a793a44d2ddd376046e7dbb841ca13b6
This commit is contained in:
parent
288e0f1ee8
commit
9c8a033415
@ -18,7 +18,7 @@ ARRAY_MAX_SIZE = 1000
|
||||
|
||||
@generic
|
||||
def from_param(datatype, value):
|
||||
return datatype(value) if value else None
|
||||
return datatype(value) if value is not None else None
|
||||
|
||||
|
||||
@from_param.when_object(datetime.date)
|
||||
|
@ -75,3 +75,32 @@ class TestProtocolsCommons(unittest.TestCase):
|
||||
assert fake_type.name in str(e)
|
||||
else:
|
||||
self.fail('Should have thrown an InvalidInput')
|
||||
|
||||
|
||||
class ArgTypeConversion(unittest.TestCase):
|
||||
|
||||
def test_int_zero(self):
|
||||
self.assertEqual(0, from_param(int, 0))
|
||||
self.assertEqual(0, from_param(int, '0'))
|
||||
|
||||
def test_int_nonzero(self):
|
||||
self.assertEqual(1, from_param(int, 1))
|
||||
self.assertEqual(1, from_param(int, '1'))
|
||||
|
||||
def test_int_none(self):
|
||||
self.assertEqual(None, from_param(int, None))
|
||||
|
||||
def test_float_zero(self):
|
||||
self.assertEqual(0.0, from_param(float, 0))
|
||||
self.assertEqual(0.0, from_param(float, 0.0))
|
||||
self.assertEqual(0.0, from_param(float, '0'))
|
||||
self.assertEqual(0.0, from_param(float, '0.0'))
|
||||
|
||||
def test_float_nonzero(self):
|
||||
self.assertEqual(1.0, from_param(float, 1))
|
||||
self.assertEqual(1.0, from_param(float, 1.0))
|
||||
self.assertEqual(1.0, from_param(float, '1'))
|
||||
self.assertEqual(1.0, from_param(float, '1.0'))
|
||||
|
||||
def test_float_none(self):
|
||||
self.assertEqual(None, from_param(float, None))
|
||||
|
Loading…
x
Reference in New Issue
Block a user