e098357d3de0bd761a7aa7a7f60c45925c0b2e33
1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
17 var srv
= new Neo4jServer
20 # key used to loosely assume unicity and prevent conflicting db accesses
21 var key
= "NIT_TESTING_ID".environ
.to_i
23 var andres
= new NeoNode
24 andres
.labels
.add_all
(["PERSON", "MALE"])
25 andres
["name"] = "Andres"
27 andres
["status"] = true
28 andres
["groups"] = new JsonArray.from
([1, 2, 3])
31 var kate
= new NeoNode
32 kate
.labels
.add_all
(["PERSON", "FEMALE"])
35 kate
["status"] = false
37 var loves
= new NeoEdge(andres
, "LOVES", kate
)
40 var client
= new Neo4jClient("http://localhost:7474")
43 # Clear the previous objects, if any
44 client
.cypher
(new CypherQuery.from_string
("MATCH (n) WHERE n.key = {key} OPTIONAL MATCH n-[r]-() DELETE r, n"))
46 print
"# Save batch\n"
48 var batch
= new NeoBatch(client
)
49 batch
.save_node
(andres
)
51 batch
.save_edge
(loves
)
52 var errors
= batch
.execute
54 assert errors
.is_empty
55 assert andres
.is_linked
57 assert loves
.is_linked
59 var andres_url
= andres
.url
.to_s
60 var kate_url
= kate
.url
.to_s
61 var loves_url
= loves
.url
.to_s
63 client
= new Neo4jClient("http://localhost:7474")
67 var res4
= client
.load_node
(andres_url
)
69 print res4
["name"].to_s
70 print res4
["age"].to_s
71 print res4
["status"].to_s
72 print res4
["groups"].to_json
73 print res4
.labels
.join
(" ")
74 assert res4
.in_edges
.is_empty
75 assert not res4
.out_edges
.is_empty
78 var res5
= client
.load_node
(kate_url
)
80 print res5
["name"].to_s
81 print res5
["age"].to_s
82 print res5
["status"].to_s
83 print res5
.labels
.join
(" ")
84 assert not res5
.in_edges
.is_empty
85 assert res5
.out_edges
.is_empty
88 var res6
= client
.load_edge
(loves_url
)
90 print res6
.rel_type
.to_s
91 print res6
["since"].to_s
92 print
"{res4["name"].to_s} LOVES {res4.out_nodes("LOVES").first["name"].to_s}"
93 print
"{res5["name"].to_s} IS LOVED BY {res5.in_nodes("LOVES").first["name"].to_s}"
96 var query
= (new CypherQuery).
97 nmatch
("(n: MALE)-[r: LOVES]->(m)").
98 nwhere
("n.name = 'Andres'").
99 nand
("n.key = {key}").
101 var res7
= client
.cypher
(query
)
102 assert res7
.as(JsonObject)["data"].as(JsonArray).length
== 1