@@ -3,6 +3,8 @@ describe('$firebase', function () {
33
44 var $firebase , $timeout , $rootScope , $utils ;
55
6+ var defaults = JSON . parse ( window . __html__ [ 'fixtures/data.json' ] ) ;
7+
68 beforeEach ( function ( ) {
79 module ( 'firebase' ) ;
810 module ( 'mock.firebase' ) ;
@@ -29,7 +31,10 @@ describe('$firebase', function () {
2931 describe ( '<constructor>' , function ( ) {
3032 var $fb ;
3133 beforeEach ( function ( ) {
32- $fb = $firebase ( new Firebase ( 'Mock://' ) . child ( 'data' ) ) ;
34+ var ref = new Firebase ( 'Mock://' ) ;
35+ ref . set ( defaults ) ;
36+ ref . flush ( ) ;
37+ $fb = $firebase ( ref . child ( 'data' ) ) ;
3338 } ) ;
3439
3540 it ( 'should accept a Firebase ref' , function ( ) {
@@ -108,7 +113,7 @@ describe('$firebase', function () {
108113 var blackSpy = jasmine . createSpy ( 'reject' ) ;
109114 $fb . $push ( { foo : 'bar' } ) . then ( whiteSpy , blackSpy ) ;
110115 flushAll ( ) ;
111- var newId = $fb . $ref ( ) . getLastAutoId ( ) ;
116+ var newId = $fb . $ref ( ) . _lastAutoId ;
112117 expect ( whiteSpy ) . toHaveBeenCalled ( ) ;
113118 expect ( blackSpy ) . not . toHaveBeenCalled ( ) ;
114119 var ref = whiteSpy . calls . argsFor ( 0 ) [ 0 ] ;
@@ -138,10 +143,8 @@ describe('$firebase', function () {
138143 var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) . limit ( 5 ) ;
139144 var $fb = $firebase ( ref ) ;
140145 spyOn ( ref . ref ( ) , 'push' ) . and . callThrough ( ) ;
141- flushAll ( ) ;
142146 expect ( ref . ref ( ) . push ) . not . toHaveBeenCalled ( ) ;
143147 $fb . $push ( { foo : 'querytest' } ) ;
144- flushAll ( ) ;
145148 expect ( ref . ref ( ) . push ) . toHaveBeenCalled ( ) ;
146149 } ) ;
147150 } ) ;
@@ -203,7 +206,6 @@ describe('$firebase', function () {
203206 var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) . limit ( 1 ) ;
204207 var $fb = $firebase ( ref ) ;
205208 spyOn ( ref . ref ( ) , 'update' ) ;
206- ref . flush ( ) ;
207209 var expKeys = ref . slice ( ) . keys ;
208210 $fb . $set ( { hello : 'world' } ) ;
209211 ref . flush ( ) ;
@@ -216,6 +218,7 @@ describe('$firebase', function () {
216218 var $fb , flushAll ;
217219 beforeEach ( function ( ) {
218220 $fb = $firebase ( new Firebase ( 'Mock://' ) . child ( 'data' ) ) ;
221+ $fb . $ref ( ) . set ( defaults . data ) ;
219222 flushAll = flush . bind ( null , $fb . $ref ( ) ) ;
220223 } ) ;
221224
@@ -239,8 +242,7 @@ describe('$firebase', function () {
239242 var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) . limit ( 2 ) ;
240243 var $fb = $firebase ( ref ) ;
241244 $fb . $remove ( ) . then ( spy ) ;
242- flushAll ( ref ) ;
243- flushAll ( ref ) ;
245+ flush ( ref ) ;
244246 expect ( spy ) . toHaveBeenCalledWith ( ref ) ;
245247 } ) ;
246248
@@ -285,48 +287,59 @@ describe('$firebase', function () {
285287 } ) ;
286288
287289 it ( 'should only remove keys in query if used on a query' , function ( ) {
288- var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) . limit ( 2 ) ;
289- var keys = ref . slice ( ) . keys ;
290- var origKeys = ref . ref ( ) . getKeys ( ) ;
290+ var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' )
291+ var query = ref . limit ( 2 ) ;
292+ ref . set ( defaults . ordered ) ;
293+ ref . flush ( ) ;
294+ var keys = query . slice ( ) . keys ;
295+ var origKeys = query . ref ( ) . getKeys ( ) ;
291296 expect ( keys . length ) . toBeGreaterThan ( 0 ) ;
292297 expect ( origKeys . length ) . toBeGreaterThan ( keys . length ) ;
293- var $fb = $firebase ( ref ) ;
294- flushAll ( ref ) ;
298+ var $fb = $firebase ( query ) ;
295299 origKeys . forEach ( function ( key ) {
296- spyOn ( ref . ref ( ) . child ( key ) , 'remove' ) ;
300+ spyOn ( query . ref ( ) . child ( key ) , 'remove' ) ;
297301 } ) ;
298302 $fb . $remove ( ) ;
299- flushAll ( ref ) ;
303+ flushAll ( query ) ;
300304 keys . forEach ( function ( key ) {
301- expect ( ref . ref ( ) . child ( key ) . remove ) . toHaveBeenCalled ( ) ;
305+ expect ( query . ref ( ) . child ( key ) . remove ) . toHaveBeenCalled ( ) ;
302306 } ) ;
303307 origKeys . forEach ( function ( key ) {
304308 if ( keys . indexOf ( key ) === - 1 ) {
305- expect ( ref . ref ( ) . child ( key ) . remove ) . not . toHaveBeenCalled ( ) ;
309+ expect ( query . ref ( ) . child ( key ) . remove ) . not . toHaveBeenCalled ( ) ;
306310 }
307311 } ) ;
308312 } ) ;
309313
310314 it ( 'should wait to resolve promise until data is actually deleted' , function ( ) {
311- var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) . limit ( 2 ) ;
312- var $fb = $firebase ( ref ) ;
315+ var ref = new Firebase ( 'Mock://' ) . child ( 'ordered' ) ;
316+ ref . set ( defaults . ordered ) ;
317+ ref . flush ( ) ;
318+ var query = ref . limit ( 2 ) ;
319+ var $fb = $firebase ( query ) ;
313320 var resolved = false ;
314321 $fb . $remove ( ) . then ( function ( ) {
315322 resolved = true ;
316323 } ) ;
317- try { $timeout . flush ( ) ; } catch ( e ) { } //this may actually throw an error
318324 expect ( resolved ) . toBe ( false ) ;
319- flushAll ( ref ) ;
320- flushAll ( ref ) ;
325+ // flush once for on('value')
326+ ref . flush ( ) ;
327+ // flush again to fire the ref#remove calls
328+ ref . flush ( ) ;
329+ // then flush the promise
330+ $timeout . flush ( ) ;
321331 expect ( resolved ) . toBe ( true ) ;
322332 } ) ;
323333 } ) ;
324334
325335 describe ( '$update' , function ( ) {
326336 var $fb , flushAll ;
327337 beforeEach ( function ( ) {
328- $fb = $firebase ( new Firebase ( 'Mock://' ) . child ( 'data' ) ) ;
329- flushAll = flush . bind ( null , $fb . $ref ( ) ) ;
338+ var ref = new Firebase ( 'Mock://' ) . child ( 'data' ) ;
339+ ref . set ( defaults . data ) ;
340+ ref . flush ( ) ;
341+ $fb = $firebase ( ref ) ;
342+ flushAll = flush . bind ( null , ref ) ;
330343 } ) ;
331344
332345 it ( 'should return a promise' , function ( ) {
@@ -353,7 +366,6 @@ describe('$firebase', function () {
353366 } ) ;
354367
355368 it ( 'should not destroy untouched keys' , function ( ) {
356- flushAll ( ) ;
357369 var data = $fb . $ref ( ) . getData ( ) ;
358370 data . a = 'foo' ;
359371 delete data . b ;
@@ -373,7 +385,6 @@ describe('$firebase', function () {
373385
374386 it ( 'should work on a query object' , function ( ) {
375387 var $fb2 = $firebase ( $fb . $ref ( ) . limit ( 1 ) ) ;
376- flushAll ( ) ;
377388 $fb2 . $update ( { foo : 'bar' } ) ;
378389 flushAll ( ) ;
379390 expect ( $fb2 . $ref ( ) . ref ( ) . getData ( ) . foo ) . toBe ( 'bar' ) ;
@@ -445,7 +456,10 @@ describe('$firebase', function () {
445456
446457 beforeEach ( function ( ) {
447458 $ArrayFactory = stubArrayFactory ( ) ;
448- $fb = $firebase ( new Firebase ( 'Mock://' ) . child ( 'data' ) , { arrayFactory : $ArrayFactory } ) ;
459+ var ref = new Firebase ( 'Mock://' ) . child ( 'data' ) ;
460+ ref . set ( defaults . data ) ;
461+ ref . flush ( ) ;
462+ $fb = $firebase ( ref , { arrayFactory : $ArrayFactory } ) ;
449463 } ) ;
450464
451465 it ( 'should call $FirebaseArray constructor with correct args' , function ( ) {
@@ -580,10 +594,9 @@ describe('$firebase', function () {
580594
581595 it ( 'should call $$error if an error event occurs' , function ( ) {
582596 var arr = $fb . $asArray ( ) ;
583- // flush all the existing data through
584597 flushAll ( ) ;
585598 $fb . $ref ( ) . forceCancel ( 'test_failure' ) ;
586- flushAll ( ) ;
599+ $timeout . flush ( ) ;
587600 expect ( arr . $$error ) . toHaveBeenCalledWith ( 'test_failure' ) ;
588601 } ) ;
589602
@@ -642,7 +655,10 @@ describe('$firebase', function () {
642655
643656 beforeEach ( function ( ) {
644657 var Factory = stubObjectFactory ( ) ;
645- $fb = $firebase ( new Firebase ( 'Mock://' ) . child ( 'data' ) , { objectFactory : Factory } ) ;
658+ var ref = new Firebase ( 'Mock://' ) . child ( 'data' ) ;
659+ ref . set ( defaults . data ) ;
660+ ref . flush ( ) ;
661+ $fb = $firebase ( ref , { objectFactory : Factory } ) ;
646662 $fb . $Factory = Factory ;
647663 } ) ;
648664
@@ -689,7 +705,7 @@ describe('$firebase', function () {
689705 flushAll ( ) ;
690706 expect ( obj . $$error ) . not . toHaveBeenCalled ( ) ;
691707 ref . forceCancel ( 'test_cancel' ) ;
692- flushAll ( ) ;
708+ $timeout . flush ( ) ;
693709 expect ( obj . $$error ) . toHaveBeenCalledWith ( 'test_cancel' ) ;
694710 } ) ;
695711
0 commit comments