@@ -100,11 +100,19 @@ describe('#integration-rx navigation', () => {
100
100
it ( 'should fail on records when run fails' , ( ) =>
101
101
shouldFailOnRecordsWhenRunFails ( serverVersion , session ) )
102
102
103
+ it ( 'should fail on subsequent records differently when run fails' , ( ) =>
104
+ shouldFailOnSubsequentRecordsWhenRunFails ( serverVersion , session ) )
105
+
103
106
it ( 'should fail on summary when run fails' , ( ) =>
104
107
shouldFailOnSummaryWhenRunFails ( serverVersion , session ) )
105
108
106
109
it ( 'should fail on subsequent summary when run fails' , ( ) =>
107
- shouldFailOnSubsequentKeysWhenRunFails ( serverVersion , session ) )
110
+ shouldFailOnSubsequentSummaryWhenRunFails ( serverVersion , session ) )
111
+
112
+ it ( 'should fail on result when closed' , ( ) =>
113
+ shouldFailOnResultWhenClosed ( serverVersion , session , ( ) =>
114
+ session . close ( )
115
+ ) )
108
116
} )
109
117
110
118
describe ( 'transaction' , ( ) => {
@@ -197,11 +205,20 @@ describe('#integration-rx navigation', () => {
197
205
it ( 'should fail on records when run fails' , ( ) =>
198
206
shouldFailOnRecordsWhenRunFails ( serverVersion , txc ) )
199
207
208
+ it ( 'should fail on subsequent records differently when run fails' , ( ) =>
209
+ shouldFailOnSubsequentRecordsWhenRunFails ( serverVersion , txc ) )
210
+
200
211
it ( 'should fail on summary when run fails' , ( ) =>
201
212
shouldFailOnSummaryWhenRunFails ( serverVersion , txc ) )
202
213
203
214
it ( 'should fail on subsequent summary when run fails' , ( ) =>
204
- shouldFailOnSubsequentKeysWhenRunFails ( serverVersion , txc ) )
215
+ shouldFailOnSubsequentSummaryWhenRunFails ( serverVersion , txc ) )
216
+
217
+ it ( 'should fail on result when committed' , ( ) =>
218
+ shouldFailOnResultWhenClosed ( serverVersion , txc , ( ) => txc . commit ( ) ) )
219
+
220
+ it ( 'should fail on result when rolled back' , ( ) =>
221
+ shouldFailOnResultWhenClosed ( serverVersion , txc , ( ) => txc . rollback ( ) ) )
205
222
} )
206
223
207
224
/**
@@ -310,7 +327,10 @@ describe('#integration-rx navigation', () => {
310
327
await collectAndAssertKeys ( result )
311
328
await collectAndAssertSummary ( result )
312
329
313
- await collectAndAssertEmpty ( result . records ( ) )
330
+ const expectedError = jasmine . objectContaining ( {
331
+ message : jasmine . stringMatching ( / S t r e a m i n g h a s a l r e a d y s t a r t e d / )
332
+ } )
333
+ await collectAndAssertError ( result . records ( ) , expectedError )
314
334
}
315
335
316
336
/**
@@ -402,9 +422,13 @@ describe('#integration-rx navigation', () => {
402
422
)
403
423
404
424
await collectAndAssertRecords ( result )
405
- await collectAndAssertEmpty ( result . records ( ) )
406
- await collectAndAssertEmpty ( result . records ( ) )
407
- await collectAndAssertEmpty ( result . records ( ) )
425
+
426
+ const expectedError = jasmine . objectContaining ( {
427
+ message : jasmine . stringMatching ( / S t r e a m i n g h a s a l r e a d y s t a r t e d / )
428
+ } )
429
+ await collectAndAssertError ( result . records ( ) , expectedError )
430
+ await collectAndAssertError ( result . records ( ) , expectedError )
431
+ await collectAndAssertError ( result . records ( ) , expectedError )
408
432
}
409
433
410
434
/**
@@ -527,6 +551,32 @@ describe('#integration-rx navigation', () => {
527
551
)
528
552
}
529
553
554
+ /**
555
+ * @param {ServerVersion } version
556
+ * @param {RxSession|RxTransaction } runnable
557
+ */
558
+ async function shouldFailOnSubsequentRecordsWhenRunFails ( version , runnable ) {
559
+ if ( version . compareTo ( VERSION_4_0_0 ) < 0 ) {
560
+ return
561
+ }
562
+
563
+ const result = runnable . run ( 'THIS IS NOT A CYPHER' )
564
+
565
+ await collectAndAssertError (
566
+ result . records ( ) ,
567
+ jasmine . objectContaining ( {
568
+ code : 'Neo.ClientError.Statement.SyntaxError' ,
569
+ message : jasmine . stringMatching ( / I n v a l i d i n p u t / )
570
+ } )
571
+ )
572
+
573
+ const expectedError = jasmine . objectContaining ( {
574
+ message : jasmine . stringMatching ( / S t r e a m i n g h a s a l r e a d y s t a r t e d / )
575
+ } )
576
+ await collectAndAssertError ( result . records ( ) , expectedError )
577
+ await collectAndAssertError ( result . records ( ) , expectedError )
578
+ }
579
+
530
580
/**
531
581
* @param {ServerVersion } version
532
582
* @param {RxSession|RxTransaction } runnable
@@ -539,7 +589,7 @@ describe('#integration-rx navigation', () => {
539
589
const result = runnable . run ( 'THIS IS NOT A CYPHER' )
540
590
541
591
await collectAndAssertError (
542
- result . summary ( ) ,
592
+ result . consume ( ) ,
543
593
jasmine . objectContaining ( {
544
594
code : 'Neo.ClientError.Statement.SyntaxError' ,
545
595
message : jasmine . stringMatching ( / I n v a l i d i n p u t / )
@@ -562,9 +612,30 @@ describe('#integration-rx navigation', () => {
562
612
message : jasmine . stringMatching ( / I n v a l i d i n p u t / )
563
613
} )
564
614
565
- await collectAndAssertError ( result . summary ( ) , expectedError )
566
- await collectAndAssertError ( result . summary ( ) , expectedError )
567
- await collectAndAssertError ( result . summary ( ) , expectedError )
615
+ await collectAndAssertError ( result . consume ( ) , expectedError )
616
+ await collectAndAssertError ( result . consume ( ) , expectedError )
617
+ await collectAndAssertError ( result . consume ( ) , expectedError )
618
+ }
619
+
620
+ /**
621
+ * @param {ServerVersion } version
622
+ * @param {RxSession|RxTransaction } runnable
623
+ * @param {function(): Observable } closeFunc
624
+ */
625
+ async function shouldFailOnResultWhenClosed ( version , runnable , closeFunc ) {
626
+ if ( version . compareTo ( VERSION_4_0_0 ) < 0 ) {
627
+ return
628
+ }
629
+
630
+ const result = runnable . run ( 'RETURN 1' )
631
+ await collectAndAssertEmpty ( closeFunc ( ) )
632
+
633
+ const expectedError = jasmine . objectContaining ( {
634
+ message : jasmine . stringMatching ( / C a n n o t r u n s t a t e m e n t / )
635
+ } )
636
+ await collectAndAssertError ( result . keys ( ) , expectedError )
637
+ await collectAndAssertError ( result . records ( ) , expectedError )
638
+ await collectAndAssertError ( result . consume ( ) , expectedError )
568
639
}
569
640
570
641
async function collectAndAssertKeys ( result ) {
@@ -602,7 +673,7 @@ describe('#integration-rx navigation', () => {
602
673
603
674
async function collectAndAssertSummary ( result , expectedStatementType = 'r' ) {
604
675
const summary = await result
605
- . summary ( )
676
+ . consume ( )
606
677
. pipe (
607
678
map ( s => s . statementType ) ,
608
679
materialize ( ) ,
0 commit comments