-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathredisGraphAPITest.ts
124 lines (112 loc) · 4.09 KB
/
redisGraphAPITest.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import assert from "assert";
import redis from "redis";
import { Label } from "../src/label";
import { RedisGraph } from "../src/redisGraph";
describe('RedisGraphAPI Test', () =>{
const api = new RedisGraph("social");
beforeEach( () => {
return api.deleteGraph().catch(()=>{});
});
it("test bring your client", () => {
return new RedisGraph("social", redis.createClient());
});
it("test Create Node", () => {
// Create a node
return api.query("CREATE ({name:'roi',age:32})").then(result => {
assert.ok(!result.hasNext());
assert.equal(1, result.getStatistics().nodesCreated());
assert.ifError(
result.getStatistics().getStringValue(Label.NODES_DELETED)
);
assert.ifError(
result.getStatistics().getStringValue(Label.RELATIONSHIPS_CREATED)
);
assert.ifError(
result.getStatistics().getStringValue(Label.RELATIONSHIPS_DELETED)
);
assert.equal(2, result.getStatistics().propertiesSet());
assert.ok( result.getStatistics().queryExecutionTime()); // not 0
assert.ok(result.getStatistics().getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME)); // exsits
});
});
it("test Create Labeled Node", () => {
// Create a node with a label
return api.query("CREATE (:human{name:'danny',age:12})").then(result => {
assert.ok(!result.hasNext());
assert.equal(
"1",
result.getStatistics().getStringValue(Label.NODES_CREATED)
);
assert.equal(
"2",
result.getStatistics().getStringValue(Label.PROPERTIES_SET)
);
assert.ok(
result
.getStatistics()
.getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME)
);
});
});
it("test Connect Nodes", () => {
// Create both source and destination nodes
let createResult1 = api.query("CREATE (:person{name:'roi',age:32})");
let createResult2 = api.query("CREATE (:person{name:'amit',age:30})");
// Connect source and destination nodes.
return api
.query(
"MATCH (a:person), (b:person) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(a)"
)
.then(matchResult => {
assert.ok(!matchResult.hasNext());
assert.ifError(
matchResult.getStatistics().getStringValue(Label.NODES_CREATED)
);
assert.ifError(
matchResult.getStatistics().getStringValue(Label.PROPERTIES_SET)
);
assert.equal(1, matchResult.getStatistics().relationshipsCreated());
assert.equal(0, matchResult.getStatistics().relationshipsDeleted());
assert.ok(
matchResult
.getStatistics()
.getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME)
);
});
});
it('test Query', () => {
// Create both source and destination nodes
return api.query("CREATE (:qhuman{name:'roi',age:32})")
.then( (create1Result) => {
return api.query("CREATE (:qhuman{name:'amit',age:30})");
})
.then( (create2Result) => {
// Connect source and destination nodes.
return api.query("MATCH (a:qhuman), (b:qhuman) WHERE (a.name = 'roi' AND b.name='amit') CREATE (a)-[:knows]->(b)");
})
.then( (connectResult) => {
// Query
return api.query("MATCH (a:qhuman)-[knows]->(:qhuman) RETURN a");
})
.then( (resultSet) => {
assert.ok(resultSet.hasNext());
assert.equal(0, resultSet.getStatistics().nodesCreated());
assert.equal(0, resultSet.getStatistics().nodesDeleted());
assert.equal(0, resultSet.getStatistics().labelsAdded());
assert.equal(0, resultSet.getStatistics().propertiesSet());
assert.equal(0, resultSet.getStatistics().relationshipsCreated());
assert.equal(0, resultSet.getStatistics().relationshipsDeleted());
assert.ok(resultSet.getStatistics().getStringValue(Label.QUERY_INTERNAL_EXECUTION_TIME));
assert.deepStrictEqual( [ 'a.age', 'a.name' ], resultSet.getHeader());
let record = resultSet.next();
assert.equal( "roi", record.getString(1));
assert.equal( "roi", record.getString("a.name"));
assert.equal( "32.000000", record.getString(0));
assert.deepStrictEqual( [ 'a.age', 'a.name' ], record.keys());
assert.deepStrictEqual( [ '32.000000', 'roi' ], record.values());
assert.equal( false, record.containsKey("aa"));
assert.equal( true, record.containsKey("a.name"));
assert.equal( 2, record.size());
});
});
});