From f936ed3c78754061678dd71b28daa34d8a8119f1 Mon Sep 17 00:00:00 2001 From: Enol Fernandez Date: Mon, 24 Jul 2017 11:51:10 +0100 Subject: [PATCH] Render default values that are not None Allow rendering 0, False and other default values that would be considered as false by python. Change-Id: I0108b4430e831a7aa14bfd8d6deb4accb759d578 --- ooi/occi/rendering/occi_json.py | 2 +- ooi/tests/unit/occi/renderings/test_json.py | 30 ++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/ooi/occi/rendering/occi_json.py b/ooi/occi/rendering/occi_json.py index 1110662..5a7c70f 100644 --- a/ooi/occi/rendering/occi_json.py +++ b/ooi/occi/rendering/occi_json.py @@ -70,7 +70,7 @@ class AttributeRenderer(JsonRenderer): } if self.obj.description: r["description"] = self.obj.description - if self.obj.default: + if self.obj.default is not None: r["default"] = self.obj.default # TODO(enolfc): missing pattern return {self.obj.name: r} diff --git a/ooi/tests/unit/occi/renderings/test_json.py b/ooi/tests/unit/occi/renderings/test_json.py index 1607f5a..8a33628 100644 --- a/ooi/tests/unit/occi/renderings/test_json.py +++ b/ooi/tests/unit/occi/renderings/test_json.py @@ -67,7 +67,7 @@ class TestOCCIJsonRendering(base.BaseRendererTest): "required": attr.required, "type": "string", } - if attr.default: + if attr.default is not None: expected["default"] = attr.default if attr.description: expected["description"] = attr.description @@ -206,6 +206,20 @@ class TestOCCIJsonRendering(base.BaseRendererTest): } self.assertEqual(expected, json.loads(observed)) + def test_number_attr_default_0(self): + attr = attribute.MutableAttribute( + "org.example", default=0, + attr_type=attribute.AttributeType.number_type) + r = self.renderer.get_renderer(attr) + observed = r.render() + expected = { + "org.example": { + "type": "number", "required": False, "mutable": True, + "default": 0, + } + } + self.assertEqual(expected, json.loads(observed)) + def test_boolean_attr(self): attr = attribute.MutableAttribute( "org.example", attr_type=attribute.AttributeType.boolean_type) @@ -217,3 +231,17 @@ class TestOCCIJsonRendering(base.BaseRendererTest): } } self.assertEqual(expected, json.loads(observed)) + + def test_boolean_attr_default_false(self): + attr = attribute.MutableAttribute( + "org.example", default=False, + attr_type=attribute.AttributeType.boolean_type) + r = self.renderer.get_renderer(attr) + observed = r.render() + expected = { + "org.example": { + "type": "boolean", "required": False, "mutable": True, + "default": False, + } + } + self.assertEqual(expected, json.loads(observed))