memgraph/tests/e2e/mock_api/procedures/path.py
2023-09-19 12:37:55 +02:00

76 lines
2.3 KiB
Python

import copy
import mgp
import mgp_mock
import test_utils
@mgp.read_proc
def compare_apis(ctx: mgp.ProcCtx) -> mgp.Record(results_dict=mgp.Map):
mock_ctx = test_utils.get_mock_proc_ctx(is_write=False)
results = dict()
START_ID = 0
start_vertex = test_utils.get_vertex(ctx, permanent_id=START_ID)
mock_start_vertex = mock_ctx.graph.get_vertex_by_id(START_ID)
path = mgp.Path(start_vertex)
mock_path = mgp_mock.Path(mock_start_vertex)
results["is_valid"] = test_utils.all_equal(
path.is_valid(),
mock_path.is_valid(),
True,
)
EDGE_ID = 0
edge_to_add = test_utils.get_edge(ctx, permanent_id=EDGE_ID)
mock_edge_to_add = test_utils.get_mock_edge(mock_ctx, id=EDGE_ID)
path.expand(edge_to_add)
mock_path.expand(mock_edge_to_add)
results["expand"] = test_utils.all_equal(
(len(path.vertices), len(path.edges)),
(len(mock_path.vertices), len(mock_path.edges)),
(2, 1),
)
path.pop()
mock_path.pop()
results["pop"] = test_utils.all_equal(
(len(path.vertices), len(path.edges)),
(len(mock_path.vertices), len(mock_path.edges)),
(1, 0),
)
path.expand(edge_to_add)
mock_path.expand(mock_edge_to_add)
NEXT_ID = 1
results["vertices"] = test_utils.all_equal(
all(isinstance(vertex, mgp.Vertex) for vertex in path.vertices),
all(isinstance(vertex, mgp_mock.Vertex) for vertex in mock_path.vertices),
True,
) and test_utils.all_equal(
[vertex.properties["permanent_id"] for vertex in path.vertices],
[vertex.properties["permanent_id"] for vertex in mock_path.vertices],
[START_ID, NEXT_ID],
)
results["edges"] = test_utils.all_equal(
all(isinstance(edge, mgp.Edge) for edge in path.edges),
all(isinstance(edge, mgp_mock.Edge) for edge in mock_path.edges),
True,
) and test_utils.all_equal(
[edge.properties["permanent_id"] for edge in path.edges],
[edge.properties["permanent_id"] for edge in mock_path.edges],
[0],
)
path_copy = copy.copy(path)
mock_path_copy = copy.copy(mock_path)
results["__copy__"] = test_utils.all_equal(
path_copy.is_valid(),
mock_path_copy.is_valid(),
True,
)
return mgp.Record(results_dict=results)