Skip to content

Commit 22c9e8f

Browse files
committed
Remove 'rows' field in results, as it's not used by the Javascript. Also, add a test for the multi-column case.
1 parent 308faf8 commit 22c9e8f

File tree

2 files changed

+40
-34
lines changed

2 files changed

+40
-34
lines changed

bigquery_magics/graph_server.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,15 @@ def convert_graph_data(query_results: Dict[str, Dict[str, str]]):
102102

103103
return {
104104
"response": {
105+
# These fields populate the graph result view.
105106
"nodes": nodes,
106107
"edges": edges,
108+
109+
# This populates the visualizer's schema view, but not yet implemented on the
110+
# BigQuery side.
107111
"schema": None,
108-
"rows": rows,
112+
113+
# This field is used to populate the visualizer's tabular view.
109114
"query_result": data,
110115
}
111116
}

tests/unit/test_graph_server.py

+34-33
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ def test_convert_one_column_no_rows():
140140
"edges": [],
141141
"nodes": [],
142142
"query_result": {"result": []},
143-
"rows": [],
144143
"schema": None,
145144
}
146145
}
@@ -164,7 +163,6 @@ def test_convert_one_column_one_row_one_column():
164163
_validate_nodes_and_edges(result)
165164

166165
assert result["response"]["query_result"] == {"result": [row_alex_owns_account]}
167-
assert result["response"]["rows"] == [[row_alex_owns_account]]
168166
assert result["response"]["schema"] is None
169167

170168

@@ -185,11 +183,6 @@ def test_convert_one_column_one_row_one_column_null_json():
185183
"edges": [],
186184
"nodes": [],
187185
"query_result": {"result": []},
188-
"rows": [
189-
[
190-
None,
191-
]
192-
],
193186
"schema": None,
194187
},
195188
}
@@ -218,10 +211,34 @@ def test_convert_one_column_two_rows():
218211
assert result["response"]["query_result"] == {
219212
"result": [row_alex_owns_account, row_lee_owns_account]
220213
}
221-
assert result["response"]["rows"] == [
222-
[row_alex_owns_account],
223-
[row_lee_owns_account],
224-
]
214+
assert result["response"]["schema"] is None
215+
216+
217+
@pytest.mark.skipif(
218+
graph_visualization is None, reason="Requires `spanner-graph-notebook`"
219+
)
220+
def test_convert_one_row_two_columns():
221+
result = graph_server.convert_graph_data(
222+
{
223+
"col1": {
224+
"0": json.dumps(row_alex_owns_account),
225+
},
226+
"col2": {
227+
"0": json.dumps(row_lee_owns_account),
228+
},
229+
}
230+
)
231+
print(json.dumps(result))
232+
233+
assert len(result["response"]["nodes"]) == 4
234+
assert len(result["response"]["edges"]) == 2
235+
236+
_validate_nodes_and_edges(result)
237+
238+
assert result["response"]["query_result"] == {
239+
"col1": [row_alex_owns_account],
240+
"col2": [row_lee_owns_account],
241+
}
225242
assert result["response"]["schema"] is None
226243

227244

@@ -243,7 +260,6 @@ def test_convert_nongraph_json():
243260
assert len(result["response"]["edges"]) == 0
244261

245262
assert result["response"]["query_result"] == {"result": [{"foo": 1, "bar": 2}]}
246-
assert result["response"]["rows"] == [[{"foo": 1, "bar": 2}]]
247263
assert result["response"]["schema"] is None
248264

249265

@@ -297,32 +313,18 @@ def test_convert_inner_value_not_string():
297313
assert result == {"error": "Expected inner value to be str, got <class 'int'>"}
298314

299315

300-
@pytest.mark.skipif(
301-
graph_visualization is None, reason="Requires `spanner-graph-notebook`"
302-
)
303-
def test_convert_one_column_one_row_two_columns():
304-
result = graph_server.convert_graph_data(
305-
{
306-
"result1": {
307-
"0": json.dumps(row_alex_owns_account),
308-
},
309-
"result2": {
310-
"0": json.dumps(row_alex_owns_account),
311-
},
312-
}
313-
)
314-
assert result == {
315-
"error": "Query has multiple columns - graph visualization not supported"
316-
}
317-
318-
319316
@pytest.mark.skipif(
320317
graph_visualization is None, reason="Requires `spanner-graph-notebook`"
321318
)
322319
def test_convert_empty_dict():
323320
result = graph_server.convert_graph_data({})
324321
assert result == {
325-
"error": "query result with no columns is not supported for graph visualization"
322+
"response": {
323+
"nodes": [],
324+
"edges": [],
325+
"schema": None,
326+
"query_result": {},
327+
}
326328
}
327329

328330

@@ -411,7 +413,6 @@ def test_post_query(self):
411413
self.assertEqual(
412414
response_data["query_result"], {"result": [row_alex_owns_account]}
413415
)
414-
self.assertEqual(response_data["rows"], [[row_alex_owns_account]])
415416
self.assertIsNone(response_data["schema"])
416417

417418

0 commit comments

Comments
 (0)