@@ -335,6 +335,57 @@ describe("RedisGraphAPI Test", () => {
335
335
}
336
336
} ) ;
337
337
338
+ it ( "test readonly query" , async ( ) => {
339
+ // Create both source and destination nodes
340
+ await api . query (
341
+ "CREATE (r:human {name:'roi', age:34}), (a:human {name:'amit', age:32}), (r)-[:knows]->(a)"
342
+ ) ;
343
+ // Query
344
+ let resultSet = await api . readonlyQuery (
345
+ "MATCH (r:human)-[:knows]->(a:human) RETURN r.age, r.name"
346
+ ) ;
347
+ assert . equal ( resultSet . size ( ) , 1 ) ;
348
+ assert . ok ( resultSet . hasNext ( ) ) ;
349
+ assert . equal ( 0 , resultSet . getStatistics ( ) . nodesCreated ( ) ) ;
350
+ assert . equal ( 0 , resultSet . getStatistics ( ) . nodesDeleted ( ) ) ;
351
+ assert . equal ( 0 , resultSet . getStatistics ( ) . labelsAdded ( ) ) ;
352
+ assert . equal ( 0 , resultSet . getStatistics ( ) . propertiesSet ( ) ) ;
353
+ assert . equal ( 0 , resultSet . getStatistics ( ) . relationshipsCreated ( ) ) ;
354
+ assert . equal ( 0 , resultSet . getStatistics ( ) . relationshipsDeleted ( ) ) ;
355
+ assert . ok (
356
+ resultSet
357
+ . getStatistics ( )
358
+ . getStringValue ( Label . QUERY_INTERNAL_EXECUTION_TIME )
359
+ ) ;
360
+
361
+ assert . deepStrictEqual ( [ "r.age" , "r.name" ] , resultSet . getHeader ( ) ) ;
362
+
363
+ let record = resultSet . next ( ) ;
364
+ assert . equal ( 34 , record . get ( 0 ) ) ;
365
+ assert . equal ( "34" , record . getString ( 0 ) ) ;
366
+ assert . equal ( "roi" , record . getString ( 1 ) ) ;
367
+ assert . equal ( "roi" , record . getString ( "r.name" ) ) ;
368
+
369
+ assert . deepStrictEqual ( [ "r.age" , "r.name" ] , record . keys ( ) ) ;
370
+ assert . deepStrictEqual ( [ 34 , "roi" ] , record . values ( ) ) ;
371
+ assert . equal ( false , record . containsKey ( "aa" ) ) ;
372
+ assert . equal ( true , record . containsKey ( "r.name" ) ) ;
373
+ assert . equal ( 2 , record . size ( ) ) ;
374
+ } ) ;
375
+
376
+ it ( "test readonly query exception" , async ( ) => {
377
+ assert . rejects (
378
+ ( ) => api . readonlyQuery (
379
+ "CREATE (r:human {name:'roi', age:34}), (a:human {name:'amit', age:32}), (r)-[:knows]->(a)"
380
+ ) ,
381
+ err => {
382
+ assert . strictEqual ( err . name , 'ReplyError' ) ;
383
+ assert . strictEqual ( err . message , 'graph.RO_QUERY is to be executed only on read-only queries' ) ;
384
+ return true ;
385
+ }
386
+ ) ;
387
+ } ) ;
388
+
338
389
it ( "testCompileTimeException" , async ( ) => {
339
390
await api . query ( "CREATE ()" ) ;
340
391
try {
0 commit comments