diff --git a/gqlalchemy/models.py b/gqlalchemy/models.py index 0804d8c1..fde0eaca 100644 --- a/gqlalchemy/models.py +++ b/gqlalchemy/models.py @@ -374,9 +374,9 @@ def escape_value( elif isinstance(value, str): return repr(value) if value.isprintable() else rf"'{value}'" elif isinstance(value, list): - return "[" + ", ".join(self.escape_value(val, True) for val in value) + "]" + return "[" + ", ".join(self.escape_value(val) for val in value) + "]" elif value_type == dict: - return "{" + ", ".join(f"{val}: {self.escape_value(val, True)}" for key, val in value.items()) + "}" + return "{" + ", ".join(f"{key}: {self.escape_value(val)}" for key, val in value.items()) + "}" if isinstance(value, (timedelta, time, datetime, date)): return f"{datetimeKwMapping[value_type]}('{_format_timedelta(value) if isinstance(value, timedelta) else value.isoformat()}')" else: diff --git a/tests/ogm/test_properties.py b/tests/ogm/test_properties.py index 6b5d5ec9..676ff601 100644 --- a/tests/ogm/test_properties.py +++ b/tests/ogm/test_properties.py @@ -76,3 +76,32 @@ class Test(Node): assert loaded_user4.last_name == "doe" assert loaded_user5.name == "jack" assert loaded_user5.last_name == "\u0013" + + +@pytest.mark.parametrize("database", ["neo4j", "memgraph"], indirect=True) +def test_list_property(database): + class User(Node): + my_list: list + + user = User(my_list=[1, 2, 3]).save(database) + + loaded_user = database.load_node(user) + + assert type(loaded_user) is User + assert "my_list" in User.__fields__ + assert loaded_user.my_list == [1, 2, 3] + + +@pytest.mark.parametrize("database", ["memgraph"], indirect=True) +def test_dict_property(database): + class User(Node): + my_dict: dict + + expected_dict = dict(x=1, y=-2, z=3.1, d=20, testPoint=True, label="testPoint") + user = User(my_dict=expected_dict).save(database) + + loaded_user = database.load_node(user) + + assert type(loaded_user) is User + assert "my_dict" in User.__fields__ + assert loaded_user.my_dict == expected_dict