Skip to content
This repository was archived by the owner on Mar 6, 2026. It is now read-only.

Commit 02f5894

Browse files
committed
Add tests to provide coverage for _convert_schema.
1 parent 618c9ae commit 02f5894

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

tests/unit/test_graph_server.py

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,3 +585,114 @@ def test_post_node_expansion_invalid_request(self):
585585

586586
def test_stop_server_never_started():
587587
graph_server.graph_server.stop_server()
588+
589+
590+
def test_convert_schema():
591+
input_schema = {
592+
"propertyGraphReference": {"propertyGraphId": "LDBC_SNB"},
593+
"nodeTables": [
594+
{
595+
"name": "PersonNode",
596+
"dataSourceTable": {"tableId": "PersonTable"},
597+
"keyColumns": ["id"],
598+
"labelAndProperties": [
599+
{
600+
"label": "Person",
601+
"properties": [
602+
{
603+
"name": "name",
604+
"dataType": {"typeKind": "STRING"},
605+
"expression": "p_name",
606+
}
607+
],
608+
}
609+
],
610+
}
611+
],
612+
"edgeTables": [
613+
{
614+
"name": "KnowsEdge",
615+
"dataSourceTable": {"tableId": "KnowsTable"},
616+
"keyColumns": ["p1", "p2"],
617+
"sourceNodeReference": {
618+
"nodeTable": "PersonNode",
619+
"edgeTableColumns": ["p1"],
620+
"nodeTableColumns": ["id"],
621+
},
622+
"destinationNodeReference": {
623+
"nodeTable": "PersonNode",
624+
"edgeTableColumns": ["p2"],
625+
"nodeTableColumns": ["id"],
626+
},
627+
"labelAndProperties": [
628+
{
629+
"label": "KNOWS",
630+
"properties": [
631+
{
632+
"name": "since",
633+
"dataType": {"typeKind": "DATE"},
634+
"expression": "k_since",
635+
}
636+
],
637+
}
638+
],
639+
}
640+
],
641+
}
642+
643+
schema_json = json.dumps(input_schema)
644+
result_json = graph_server._convert_schema(schema_json)
645+
result = json.loads(result_json)
646+
647+
assert result["name"] == "LDBC_SNB"
648+
assert len(result["nodeTables"]) == 1
649+
assert result["nodeTables"][0]["name"] == "PersonNode"
650+
assert result["nodeTables"][0]["baseTableName"] == "PersonTable"
651+
assert result["nodeTables"][0]["kind"] == "NODE"
652+
assert result["nodeTables"][0]["labelNames"] == ["Person"]
653+
assert result["nodeTables"][0]["propertyDefinitions"] == [
654+
{"propertyDeclarationName": "name", "valueExpressionSql": "p_name"}
655+
]
656+
657+
assert len(result["edgeTables"]) == 1
658+
assert result["edgeTables"][0]["name"] == "KnowsEdge"
659+
assert result["edgeTables"][0]["baseTableName"] == "KnowsTable"
660+
assert result["edgeTables"][0]["kind"] == "EDGE"
661+
assert result["edgeTables"][0]["labelNames"] == ["KNOWS"]
662+
assert result["edgeTables"][0]["sourceNodeTable"]["nodeTableName"] == "PersonNode"
663+
assert (
664+
result["edgeTables"][0]["destinationNodeTable"]["nodeTableName"] == "PersonNode"
665+
)
666+
assert result["edgeTables"][0]["propertyDefinitions"] == [
667+
{"propertyDeclarationName": "since", "valueExpressionSql": "k_since"}
668+
]
669+
670+
assert len(result["labels"]) == 2
671+
labels = {l["name"]: l for l in result["labels"]}
672+
assert "Person" in labels
673+
assert "name" in labels["Person"]["propertyDeclarationNames"]
674+
assert "KNOWS" in labels
675+
assert "since" in labels["KNOWS"]["propertyDeclarationNames"]
676+
677+
assert len(result["propertyDeclarations"]) == 2
678+
props = {p["name"]: p for p in result["propertyDeclarations"]}
679+
assert props["name"]["type"] == "STRING"
680+
assert props["since"]["type"] == "DATE"
681+
682+
683+
def test_convert_schema_empty():
684+
input_schema = {
685+
"propertyGraphReference": {"propertyGraphId": "EmptyGraph"},
686+
"nodeTables": [],
687+
"edgeTables": [],
688+
}
689+
690+
schema_json = json.dumps(input_schema)
691+
result_json = graph_server._convert_schema(schema_json)
692+
result = json.loads(result_json)
693+
694+
assert result["name"] == "EmptyGraph"
695+
assert result["nodeTables"] == []
696+
assert result["edgeTables"] == []
697+
assert result["labels"] == []
698+
assert result["propertyDeclarations"] == []

0 commit comments

Comments
 (0)