@@ -13,17 +13,17 @@ function scalarQueryTest(query: Query, done: any) {
1313} 
1414
1515function  observableQueryTest ( query : Query ,  nextProp : any ,  done : any )  { 
16-   const  nextSpy  =  jasmine . createSpy ( 'next' ) ; 
1716  const  queryObservable  =  observeQuery ( query ) ; 
1817  const  toMerge : any  =  { } ; 
19-   queryObservable . subscribe ( nextSpy ) ; 
18+   queryObservable . subscribe ( result  =>  { 
19+     const  merged  =  Object . assign ( query ,  toMerge ) ; 
20+     expect ( result ) . toEqual ( merged ) ; 
21+     done ( ) ; 
22+   } ) ; 
2023  Object . keys ( nextProp ) . forEach ( prop  =>  { 
2124    query [ prop ] . next ( nextProp [ prop ] ) ; 
2225    toMerge [ prop ]  =  nextProp [ prop ] ; 
23-   } ) 
24-   const  merged  =  Object . assign ( query ,  toMerge ) ; 
25-   expect ( nextSpy ) . toHaveBeenCalledWith ( merged ) ; 
26-   done ( ) ; 
26+   } ) ; 
2727} 
2828
2929describe ( 'observeQuery' ,  ( )  =>  { 
@@ -37,7 +37,7 @@ describe('observeQuery', () => {
3737    var  nextSpy  =  jasmine . createSpy ( 'next' ) ; 
3838    var  completeSpy  =  jasmine . createSpy ( 'complete' ) ; 
3939    var  query  =  {  orderByChild : 'height' ,  equalTo : 10  } ; 
40-     var  obs  =  observeQuery ( query ) ; 
40+     var  obs  =  observeQuery ( query ,   false ) ; 
4141    obs . subscribe ( nextSpy ,  null ,  completeSpy ) ; 
4242    expect ( nextSpy ) . toHaveBeenCalledWith ( { 
4343      orderByChild : 'height' , 
@@ -50,7 +50,7 @@ describe('observeQuery', () => {
5050    var  nextSpy  =  jasmine . createSpy ( 'next' ) ; 
5151    var  completeSpy  =  jasmine . createSpy ( 'complete' ) ; 
5252    var  query :any  =  null ; 
53-     var  obs  =  observeQuery ( query ) ; 
53+     var  obs  =  observeQuery ( query ,   false ) ; 
5454    obs . subscribe ( nextSpy ,  null ,  completeSpy ) ; 
5555    expect ( nextSpy ) . toHaveBeenCalledWith ( null ) ; 
5656    expect ( completeSpy ) . toHaveBeenCalled ( ) ; 
@@ -63,7 +63,7 @@ describe('observeQuery', () => {
6363    var  query  =  { 
6464      orderByKey : new  Subject < boolean > ( ) 
6565    } ; 
66-     var  obs  =  observeQuery ( query ) ; 
66+     var  obs  =  observeQuery ( query ,   false ) ; 
6767    var  noOrderyQuery  =  {  orderByKey : false  } ; 
6868    obs . subscribe ( nextSpy ,  null ,  completeSpy ) ; 
6969    query . orderByKey . next ( true ) ; 
@@ -81,7 +81,7 @@ describe('observeQuery', () => {
8181    var  query  =  { 
8282      orderByKey : new  Subject < boolean > ( ) 
8383    } ; 
84-     var  obs  =  observeQuery ( query ) ; 
84+     var  obs  =  observeQuery ( query ,   false ) ; 
8585    obs . subscribe ( nextSpy ,  null ,  completeSpy ) ; 
8686    query . orderByKey . next ( true ) ; 
8787    expect ( nextSpy ) . toHaveBeenCalledWith ( {  orderByKey : true  } ) ; 
@@ -99,7 +99,7 @@ describe('observeQuery', () => {
9999      orderByValue : new  Subject < boolean > ( ) , 
100100      orderByChild : new  Subject < string > ( ) 
101101    } ; 
102-     var  obs  =  observeQuery ( query ) ; 
102+     var  obs  =  observeQuery ( query ,   false ) ; 
103103    obs . subscribe ( nextSpy ) ; 
104104    query . orderByChild . next ( 'height' ) ; 
105105    expect ( nextSpy ) . toHaveBeenCalledWith ( { 
@@ -429,3 +429,64 @@ describe('query combinations', () => {
429429    } ) ; 
430430
431431} ) ; 
432+ 
433+ 
434+ describe ( 'audited queries' ,  ( )  =>  { 
435+ 
436+   it ( 'should immediately emit if not audited' ,  ( )  =>  { 
437+     var  nextSpy  =  jasmine . createSpy ( 'next' ) ; 
438+     var  query  =  {  orderByChild : 'height' ,  startAt : new  Subject ( ) ,  endAt : new  Subject ( )  } ; 
439+     var  obs  =  observeQuery ( query ,  false ) ; 
440+     obs . subscribe ( nextSpy ) ; 
441+     query . startAt . next ( 5 ) ; 
442+     expect ( nextSpy ) . not . toHaveBeenCalled ( ) ; 
443+     query . endAt . next ( 10 ) ; 
444+     expect ( nextSpy ) . toHaveBeenCalledWith ( { 
445+       orderByChild : 'height' , 
446+       startAt : 5 , 
447+       endAt : 10 
448+     } ) ; 
449+     query . startAt . next ( 10 ) ; 
450+     expect ( nextSpy ) . toHaveBeenCalledWith ( { 
451+       orderByChild : 'height' , 
452+       startAt : 10 , 
453+       endAt : 10 
454+     } ) ; 
455+     query . endAt . next ( 15 ) ; 
456+     expect ( nextSpy ) . toHaveBeenCalledWith ( { 
457+       orderByChild : 'height' , 
458+       startAt : 10 , 
459+       endAt : 15 
460+     } ) ; 
461+   } ) ; 
462+ 
463+   it ( 'should emit the last query (in the event loop) if audited' ,  ( done : any )  =>  { 
464+     let  emits  =  0 ; 
465+     var  query  =  {  orderByChild : 'height' ,  startAt : new  Subject ( ) ,  endAt : new  Subject ( )  } ; 
466+     var  obs  =  observeQuery ( query ,  true ) ; 
467+     obs . subscribe ( result  =>  { 
468+       switch  ( ++ emits )  { 
469+       case  1 :
470+         expect ( result ) . toEqual ( { 
471+           orderByChild : 'height' , 
472+           startAt : 5 , 
473+           endAt : 10 
474+         } ) ; 
475+         query . startAt . next ( 10 ) ; 
476+         query . endAt . next ( 15 ) ; 
477+         break ; 
478+       case  2 :
479+         expect ( result ) . toEqual ( { 
480+           orderByChild : 'height' , 
481+           startAt : 10 , 
482+           endAt : 15 
483+         } ) ; 
484+         done ( ) ; 
485+         break ; 
486+       } 
487+     } ) ; 
488+     query . startAt . next ( 5 ) ; 
489+     query . endAt . next ( 10 ) ; 
490+   } ) ; 
491+ 
492+ } ) ; 
0 commit comments