diff options
author | Doug Hellmann <doug.hellmann@dreamhost.com> | 2014-03-11 15:44:06 -0700 |
---|---|---|
committer | Doug Hellmann <doug.hellmann@dreamhost.com> | 2014-03-11 15:44:06 -0700 |
commit | 9c8a033415606667eca915c863165e5f9021bccb (patch) | |
tree | 1c31be2b16ae346a73ff0fc5e9610c06f196f0db | |
parent | 288e0f1ee8ce0716c14d7b8ed8144cb8088fc7f1 (diff) | |
download | wsme-9c8a033415606667eca915c863165e5f9021bccb.tar.gz |
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
-rw-r--r-- | wsme/rest/args.py | 2 | ||||
-rw-r--r-- | wsme/tests/test_protocols_commons.py | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/wsme/rest/args.py b/wsme/rest/args.py index 4574cdd..9b8f2e1 100644 --- a/wsme/rest/args.py +++ b/wsme/rest/args.py @@ -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) diff --git a/wsme/tests/test_protocols_commons.py b/wsme/tests/test_protocols_commons.py index 19908b2..6a4c1a8 100644 --- a/wsme/tests/test_protocols_commons.py +++ b/wsme/tests/test_protocols_commons.py @@ -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)) |