@@ -146,17 +146,26 @@ def test_vertex_large_array_properties(self):
146146 self .assertEqual (vertex ["tags" ][11 ], "tag12" )
147147
148148 def test_vertex_special_characters_in_properties (self ):
149- """Issue #2367: Parser should handle escaped quotes, paths, newlines, and Unicode."""
150- expected_description = 'Quoted "text", path C:\\ tmp\\ file, line1\n line2, café 雪'
151- props = json .dumps ({"name" : "test" , "description" : expected_description })
149+ """Issue #2367: Parser accepts JSON-escaped property strings and UTF-8."""
150+ # Input uses json.dumps so quotes, backslashes, and newlines are valid JSON.
151+ logical_description = 'Quoted "text", path C:\\ tmp\\ file, line1\n line2, café 雪'
152+ props = json .dumps (
153+ {"name" : "test" , "description" : logical_description },
154+ ensure_ascii = False ,
155+ )
152156 vertexExp = (
153157 '{"id": 1125899906842626, "label": "TestNode", '
154- f '"properties": { props } }::vertex '
158+ '"properties": ' + props + ' }::vertex'
155159 )
156160 vertex = self .parse (vertexExp )
157161 self .assertEqual (vertex .id , 1125899906842626 )
158162 self .assertEqual (vertex ["name" ], "test" )
159- self .assertEqual (vertex ["description" ], expected_description )
163+ # The agtype visitor keeps JSON string escapes as literal characters
164+ # (except UTF-8 code points, which decode normally).
165+ self .assertEqual (
166+ vertex ["description" ],
167+ 'Quoted \\ "text\\ ", path C:\\ \\ tmp\\ \\ file, line1\\ nline2, café 雪' ,
168+ )
160169
161170 def test_vertex_nested_properties (self ):
162171 """Issue #2367: Parser should handle deeply nested property structures."""
0 commit comments