def test_stringify_query_result(client): graph = client.graph() john = Node( alias="a", label="person", properties={ "name": "John Doe", "age": 33, "gender": "male", "status": "single", }, ) graph.add_node(john) japan = Node(alias="b", label="country", properties={"name": "Japan"}) graph.add_node(japan) edge = Edge(john, "visited", japan, properties={"purpose": "pleasure"}) graph.add_edge(edge) assert ( str(john) == """(a:person{age:33,gender:"male",name:"John Doe",status:"single"})""" # noqa ) assert ( str(edge) == """(a:person{age:33,gender:"male",name:"John Doe",status:"single"})""" # noqa + """-[:visited{purpose:"pleasure"}]->""" + """(b:country{name:"Japan"})""" ) assert str(japan) == """(b:country{name:"Japan"})""" graph.commit() query = """MATCH (p:person)-[v:visited {purpose:"pleasure"}]->(c:country) RETURN p, v, c""" result = client.graph().query(query) person = result.result_set[0][0] visit = result.result_set[0][1] country = result.result_set[0][2] assert ( str(person) == """(:person{age:33,gender:"male",name:"John Doe",status:"single"})""" # noqa ) assert str(visit) == """()-[:visited{purpose:"pleasure"}]->()""" assert str(country) == """(:country{name:"Japan"})""" graph.delete()
def test_graph_creation(client): graph = client.graph() john = Node( label="person", properties={ "name": "John Doe", "age": 33, "gender": "male", "status": "single", }, ) graph.add_node(john) japan = Node(label="country", properties={"name": "Japan"}) graph.add_node(japan) edge = Edge(john, "visited", japan, properties={"purpose": "pleasure"}) graph.add_edge(edge) graph.commit() query = ( 'MATCH (p:person)-[v:visited {purpose:"pleasure"}]->(c:country) ' "RETURN p, v, c" ) result = graph.query(query) person = result.result_set[0][0] visit = result.result_set[0][1] country = result.result_set[0][2] assert person == john assert visit.properties == edge.properties assert country == japan query = """RETURN [1, 2.3, "4", true, false, null]""" result = graph.query(query) assert [1, 2.3, "4", True, False, None] == result.result_set[0][0] # All done, remove graph. graph.delete()
def test_optional_match(client): # Build a graph of form (a)-[R]->(b) node0 = Node(node_id=0, label="L1", properties={"value": "a"}) node1 = Node(node_id=1, label="L1", properties={"value": "b"}) edge01 = Edge(node0, "R", node1, edge_id=0) graph = client.graph() graph.add_node(node0) graph.add_node(node1) graph.add_edge(edge01) graph.flush() # Issue a query that collects all outgoing edges from both nodes # (the second has none) query = """MATCH (a) OPTIONAL MATCH (a)-[e]->(b) RETURN a, e, b ORDER BY a.value""" # noqa expected_results = [[node0, edge01, node1], [node1, None, None]] result = client.graph().query(query) assert expected_results == result.result_set graph.delete()