summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Hellmann <doug.hellmann@dreamhost.com>2014-03-11 15:44:06 -0700
committerDoug Hellmann <doug.hellmann@dreamhost.com>2014-03-11 15:44:06 -0700
commit9c8a033415606667eca915c863165e5f9021bccb (patch)
tree1c31be2b16ae346a73ff0fc5e9610c06f196f0db
parent288e0f1ee8ce0716c14d7b8ed8144cb8088fc7f1 (diff)
downloadwsme-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.py2
-rw-r--r--wsme/tests/test_protocols_commons.py29
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))