@@ -100,11 +100,19 @@ describe('#integration-rx navigation', () => {
100100 it ( 'should fail on records when run fails' , ( ) =>
101101 shouldFailOnRecordsWhenRunFails ( serverVersion , session ) )
102102
103+ it ( 'should fail on subsequent records differently when run fails' , ( ) =>
104+ shouldFailOnSubsequentRecordsWhenRunFails ( serverVersion , session ) )
105+
103106 it ( 'should fail on summary when run fails' , ( ) =>
104107 shouldFailOnSummaryWhenRunFails ( serverVersion , session ) )
105108
106109 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+ ) )
108116 } )
109117
110118 describe ( 'transaction' , ( ) => {
@@ -197,11 +205,20 @@ describe('#integration-rx navigation', () => {
197205 it ( 'should fail on records when run fails' , ( ) =>
198206 shouldFailOnRecordsWhenRunFails ( serverVersion , txc ) )
199207
208+ it ( 'should fail on subsequent records differently when run fails' , ( ) =>
209+ shouldFailOnSubsequentRecordsWhenRunFails ( serverVersion , txc ) )
210+
200211 it ( 'should fail on summary when run fails' , ( ) =>
201212 shouldFailOnSummaryWhenRunFails ( serverVersion , txc ) )
202213
203214 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 ( ) ) )
205222 } )
206223
207224 /**
@@ -310,7 +327,10 @@ describe('#integration-rx navigation', () => {
310327 await collectAndAssertKeys ( result )
311328 await collectAndAssertSummary ( result )
312329
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 )
314334 }
315335
316336 /**
@@ -402,9 +422,13 @@ describe('#integration-rx navigation', () => {
402422 )
403423
404424 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 )
408432 }
409433
410434 /**
@@ -527,6 +551,32 @@ describe('#integration-rx navigation', () => {
527551 )
528552 }
529553
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+
530580 /**
531581 * @param {ServerVersion } version
532582 * @param {RxSession|RxTransaction } runnable
@@ -539,7 +589,7 @@ describe('#integration-rx navigation', () => {
539589 const result = runnable . run ( 'THIS IS NOT A CYPHER' )
540590
541591 await collectAndAssertError (
542- result . summary ( ) ,
592+ result . consume ( ) ,
543593 jasmine . objectContaining ( {
544594 code : 'Neo.ClientError.Statement.SyntaxError' ,
545595 message : jasmine . stringMatching ( / I n v a l i d i n p u t / )
@@ -562,9 +612,30 @@ describe('#integration-rx navigation', () => {
562612 message : jasmine . stringMatching ( / I n v a l i d i n p u t / )
563613 } )
564614
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 )
568639 }
569640
570641 async function collectAndAssertKeys ( result ) {
@@ -602,7 +673,7 @@ describe('#integration-rx navigation', () => {
602673
603674 async function collectAndAssertSummary ( result , expectedStatementType = 'r' ) {
604675 const summary = await result
605- . summary ( )
676+ . consume ( )
606677 . pipe (
607678 map ( s => s . statementType ) ,
608679 materialize ( ) ,
0 commit comments