@@ -13,17 +13,17 @@ function scalarQueryTest(query: Query, done: any) {
13
13
}
14
14
15
15
function observableQueryTest ( query : Query , nextProp : any , done : any ) {
16
- const nextSpy = jasmine . createSpy ( 'next' ) ;
17
16
const queryObservable = observeQuery ( query ) ;
18
17
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
+ } ) ;
20
23
Object . keys ( nextProp ) . forEach ( prop => {
21
24
query [ prop ] . next ( nextProp [ prop ] ) ;
22
25
toMerge [ prop ] = nextProp [ prop ] ;
23
- } )
24
- const merged = Object . assign ( query , toMerge ) ;
25
- expect ( nextSpy ) . toHaveBeenCalledWith ( merged ) ;
26
- done ( ) ;
26
+ } ) ;
27
27
}
28
28
29
29
describe ( 'observeQuery' , ( ) => {
@@ -37,7 +37,7 @@ describe('observeQuery', () => {
37
37
var nextSpy = jasmine . createSpy ( 'next' ) ;
38
38
var completeSpy = jasmine . createSpy ( 'complete' ) ;
39
39
var query = { orderByChild : 'height' , equalTo : 10 } ;
40
- var obs = observeQuery ( query ) ;
40
+ var obs = observeQuery ( query , false ) ;
41
41
obs . subscribe ( nextSpy , null , completeSpy ) ;
42
42
expect ( nextSpy ) . toHaveBeenCalledWith ( {
43
43
orderByChild : 'height' ,
@@ -50,7 +50,7 @@ describe('observeQuery', () => {
50
50
var nextSpy = jasmine . createSpy ( 'next' ) ;
51
51
var completeSpy = jasmine . createSpy ( 'complete' ) ;
52
52
var query :any = null ;
53
- var obs = observeQuery ( query ) ;
53
+ var obs = observeQuery ( query , false ) ;
54
54
obs . subscribe ( nextSpy , null , completeSpy ) ;
55
55
expect ( nextSpy ) . toHaveBeenCalledWith ( null ) ;
56
56
expect ( completeSpy ) . toHaveBeenCalled ( ) ;
@@ -63,7 +63,7 @@ describe('observeQuery', () => {
63
63
var query = {
64
64
orderByKey : new Subject < boolean > ( )
65
65
} ;
66
- var obs = observeQuery ( query ) ;
66
+ var obs = observeQuery ( query , false ) ;
67
67
var noOrderyQuery = { orderByKey : false } ;
68
68
obs . subscribe ( nextSpy , null , completeSpy ) ;
69
69
query . orderByKey . next ( true ) ;
@@ -81,7 +81,7 @@ describe('observeQuery', () => {
81
81
var query = {
82
82
orderByKey : new Subject < boolean > ( )
83
83
} ;
84
- var obs = observeQuery ( query ) ;
84
+ var obs = observeQuery ( query , false ) ;
85
85
obs . subscribe ( nextSpy , null , completeSpy ) ;
86
86
query . orderByKey . next ( true ) ;
87
87
expect ( nextSpy ) . toHaveBeenCalledWith ( { orderByKey : true } ) ;
@@ -99,7 +99,7 @@ describe('observeQuery', () => {
99
99
orderByValue : new Subject < boolean > ( ) ,
100
100
orderByChild : new Subject < string > ( )
101
101
} ;
102
- var obs = observeQuery ( query ) ;
102
+ var obs = observeQuery ( query , false ) ;
103
103
obs . subscribe ( nextSpy ) ;
104
104
query . orderByChild . next ( 'height' ) ;
105
105
expect ( nextSpy ) . toHaveBeenCalledWith ( {
@@ -429,3 +429,64 @@ describe('query combinations', () => {
429
429
} ) ;
430
430
431
431
} ) ;
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