From 250b23ccb57538e892fc22218f1dd0c89ad87916 Mon Sep 17 00:00:00 2001 From: Oleksandr Aleksyshyn <97434360+o-aleks@users.noreply.github.com> Date: Fri, 15 Jul 2022 17:27:05 +0300 Subject: [PATCH 1/2] fix: if JsonObject serialized to None then return `null_value` instead of `string_value` --- google/cloud/spanner_v1/_helpers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/google/cloud/spanner_v1/_helpers.py b/google/cloud/spanner_v1/_helpers.py index 53a73c1a60..b364514d09 100644 --- a/google/cloud/spanner_v1/_helpers.py +++ b/google/cloud/spanner_v1/_helpers.py @@ -165,7 +165,11 @@ def _make_value_pb(value): _assert_numeric_precision_and_scale(value) return Value(string_value=str(value)) if isinstance(value, JsonObject): - return Value(string_value=value.serialize()) + value = value.serialize() + if value is None: + return Value(null_value="NULL_VALUE") + else: + return Value(string_value=value) raise ValueError("Unknown type: %s" % (value,)) From fb7c9170c04c9e9bdf9d6ea1cc758e8abf434e41 Mon Sep 17 00:00:00 2001 From: Oleksandr Aleksyshyn <97434360+o-aleks@users.noreply.github.com> Date: Wed, 24 Aug 2022 19:30:42 +0300 Subject: [PATCH 2/2] test: covered the case by test --- tests/unit/test__helpers.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/unit/test__helpers.py b/tests/unit/test__helpers.py index b18adfa6fe..21434da191 100644 --- a/tests/unit/test__helpers.py +++ b/tests/unit/test__helpers.py @@ -306,6 +306,13 @@ def test_w_json(self): self.assertIsInstance(value_pb, Value) self.assertEqual(value_pb.string_value, value) + def test_w_json_None(self): + from google.cloud.spanner_v1 import JsonObject + + value = JsonObject(None) + value_pb = self._callFUT(value) + self.assertTrue(value_pb.HasField("null_value")) + class Test_make_list_value_pb(unittest.TestCase): def _callFUT(self, *args, **kw):