@@ -563,6 +563,11 @@ describe('Request', function() {
563
563
} ) ;
564
564
565
565
describe ( 'success' , function ( ) {
566
+ var entityResultsPerApiCall = {
567
+ 1 : [ { a : true } ] ,
568
+ 2 : [ { b : true } , { c : true } ]
569
+ } ;
570
+
566
571
var apiResponse = {
567
572
batch : {
568
573
entityResults : [ { a : true } , { b : true } , { c : true } ] ,
@@ -596,10 +601,6 @@ describe('Request', function() {
596
601
} ) ;
597
602
598
603
it ( 'should re-run query if not finished' , function ( done ) {
599
- var entityResults = {
600
- 1 : [ { a : true } ] ,
601
- 2 : [ { b : true } , { c : true } ]
602
- } ;
603
604
var continuationQuery ;
604
605
var query = {
605
606
limitVal : 1 ,
@@ -616,15 +617,19 @@ describe('Request', function() {
616
617
var offsetCalled = false ;
617
618
618
619
entityOverrides . formatArray = function ( array ) {
619
- assert . strictEqual ( array , entityResults [ timesRequestCalled ] ) ;
620
- return entityResults [ timesRequestCalled ] ;
620
+ assert . strictEqual (
621
+ array ,
622
+ entityResultsPerApiCall [ timesRequestCalled ]
623
+ ) ;
624
+ return entityResultsPerApiCall [ timesRequestCalled ] ;
621
625
} ;
622
626
623
627
request . request_ = function ( protoOpts , reqOpts , callback ) {
624
628
timesRequestCalled ++ ;
625
629
626
630
var resp = extend ( true , { } , apiResponse ) ;
627
- resp . batch . entityResults = entityResults [ timesRequestCalled ] ;
631
+ resp . batch . entityResults =
632
+ entityResultsPerApiCall [ timesRequestCalled ] ;
628
633
629
634
if ( timesRequestCalled === 1 ) {
630
635
assert . strictEqual ( protoOpts . service , 'Datastore' ) ;
@@ -661,7 +666,7 @@ describe('Request', function() {
661
666
if ( timesRequestCalled === 1 ) {
662
667
assert . strictEqual (
663
668
limit_ ,
664
- entityResults [ 1 ] . length - query . limitVal
669
+ entityResultsPerApiCall [ 1 ] . length - query . limitVal
665
670
) ;
666
671
} else {
667
672
// Should restore the original limit.
@@ -679,14 +684,16 @@ describe('Request', function() {
679
684
680
685
request . runQuery ( query , function ( err , entities , info ) {
681
686
assert . ifError ( err ) ;
682
- assert . deepEqual (
683
- entities ,
684
- [ ] . slice . call ( entityResults [ 1 ] ) . concat ( entityResults [ 2 ] )
685
- ) ;
687
+
688
+ var allResults = [ ] . slice . call ( entityResultsPerApiCall [ 1 ] )
689
+ . concat ( entityResultsPerApiCall [ 2 ] ) ;
690
+ assert . deepEqual ( entities , allResults ) ;
691
+
686
692
assert . deepEqual ( info , {
687
693
endCursor : apiResponse . batch . endCursor ,
688
694
moreResults : apiResponse . batch . moreResults
689
695
} ) ;
696
+
690
697
done ( ) ;
691
698
} ) ;
692
699
} ) ;
@@ -742,6 +749,56 @@ describe('Request', function() {
742
749
done ( ) ;
743
750
} ) ;
744
751
} ) ;
752
+
753
+ it ( 'should not push more results if stream was ended' , function ( done ) {
754
+ var timesRequestCalled = 0 ;
755
+ var entitiesEmitted = 0 ;
756
+
757
+ request . request_ = function ( protoOpts , reqOpts , callback ) {
758
+ timesRequestCalled ++ ;
759
+
760
+ var resp = extend ( true , { } , apiResponse ) ;
761
+ resp . batch . entityResults =
762
+ entityResultsPerApiCall [ timesRequestCalled ] ;
763
+
764
+ if ( timesRequestCalled === 1 ) {
765
+ resp . batch . moreResults = 'NOT_FINISHED' ;
766
+ callback ( null , resp ) ;
767
+ } else {
768
+ resp . batch . moreResults = 'MORE_RESULTS_AFTER_LIMIT' ;
769
+ callback ( null , resp ) ;
770
+ }
771
+ } ;
772
+
773
+ request . runQuery ( { } )
774
+ . on ( 'data' , function ( ) {
775
+ entitiesEmitted ++ ;
776
+ this . end ( ) ;
777
+ } )
778
+ . on ( 'end' , function ( ) {
779
+ assert . strictEqual ( entitiesEmitted , 1 ) ;
780
+ done ( ) ;
781
+ } ) ;
782
+ } ) ;
783
+
784
+ it ( 'should not get more results if stream was ended' , function ( done ) {
785
+ var timesRequestCalled = 0 ;
786
+
787
+ request . request_ = function ( protoOpts , reqOpts , callback ) {
788
+ timesRequestCalled ++ ;
789
+ callback ( null , apiResponse ) ;
790
+ } ;
791
+
792
+ request . runQuery ( { } )
793
+ . on ( 'error' , done )
794
+ . on ( 'data' , function ( ) {
795
+ this . end ( ) ;
796
+ } )
797
+ . on ( 'end' , function ( ) {
798
+ assert . strictEqual ( timesRequestCalled , 1 ) ;
799
+ done ( ) ;
800
+ } ) ;
801
+ } ) ;
745
802
} ) ;
746
803
} ) ;
747
804
0 commit comments