@@ -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