From 1230131d7a2d0c7a6e2f87ddeb68de4d71da7232 Mon Sep 17 00:00:00 2001 From: Giorgos Siantikos Date: Thu, 28 May 2026 06:43:54 +0300 Subject: [PATCH 1/2] fix(json): remove redundant guard in get_child_node Remove early guard rasing ValueError on an empty identifier. The lookup is performed as usual allowing the method to return None. Fixes #559 Signed-off-by: Giorgos Siantikos --- .../kiota_serialization_json/json_parse_node.py | 3 --- .../json/tests/unit/test_json_parse_node.py | 13 +++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/serialization/json/kiota_serialization_json/json_parse_node.py b/packages/serialization/json/kiota_serialization_json/json_parse_node.py index e19047d..c8a0166 100644 --- a/packages/serialization/json/kiota_serialization_json/json_parse_node.py +++ b/packages/serialization/json/kiota_serialization_json/json_parse_node.py @@ -42,9 +42,6 @@ def get_child_node(self, identifier: str) -> Optional[ParseNode]: Returns: Optional[ParseNode]: A new parse node for the given identifier """ - if not identifier: - raise ValueError("identifier cannot be None or empty.") - if isinstance(node := self._json_node, dict) and identifier in node: return self._create_new_node(node[identifier]) return None diff --git a/packages/serialization/json/tests/unit/test_json_parse_node.py b/packages/serialization/json/tests/unit/test_json_parse_node.py index f342893..5de0b40 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -35,6 +35,19 @@ def test_get_float_value_from_float(): assert result == 44.6 +def test_get_child_node_not_found(): + parse_node = JsonParseNode({"name": "Diego Siciliani"}) + result = parse_node.get_child_node("age") + assert result is None + + +def test_get_child_node_empty_name(): + parse_node = JsonParseNode({"": "Diego Siciliani"}) + result = parse_node.get_child_node("") + assert result is not None + assert result.get_str_value() == "Diego Siciliani" + + @pytest.mark.parametrize("value", [0, 10, 100]) def test_get_float_value(value: int): """ From 8e9f77868ce99324f44e44573632795a2f1b7a16 Mon Sep 17 00:00:00 2001 From: Giorgos Siantikos Date: Thu, 28 May 2026 15:44:17 +0300 Subject: [PATCH 2/2] test(json): Use fictional names in test values Signed-off-by: Giorgos Siantikos --- .../serialization/json/tests/unit/test_json_parse_node.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/serialization/json/tests/unit/test_json_parse_node.py b/packages/serialization/json/tests/unit/test_json_parse_node.py index 5de0b40..18ac2c9 100644 --- a/packages/serialization/json/tests/unit/test_json_parse_node.py +++ b/packages/serialization/json/tests/unit/test_json_parse_node.py @@ -36,16 +36,16 @@ def test_get_float_value_from_float(): def test_get_child_node_not_found(): - parse_node = JsonParseNode({"name": "Diego Siciliani"}) + parse_node = JsonParseNode({"name": "Jane Smith"}) result = parse_node.get_child_node("age") assert result is None def test_get_child_node_empty_name(): - parse_node = JsonParseNode({"": "Diego Siciliani"}) + parse_node = JsonParseNode({"": "John Smith"}) result = parse_node.get_child_node("") assert result is not None - assert result.get_str_value() == "Diego Siciliani" + assert result.get_str_value() == "John Smith" @pytest.mark.parametrize("value", [0, 10, 100])