This repository was archived by the owner on Mar 17, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed
Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 634634 var created = $firebaseUtils . batch ( function ( snap , prevChild ) {
635635 var rec = firebaseArray . $$added ( snap , prevChild ) ;
636636 if ( rec ) {
637- firebaseArray . $$process ( 'child_added' , rec , prevChild ) ;
637+ $firebaseUtils . resolve ( rec ) . then ( function ( rec ) {
638+ if ( rec ) {
639+ firebaseArray . $$process ( 'child_added' , rec , prevChild ) ;
640+ }
641+ } ) ;
638642 }
639643 } ) ;
640644 var updated = $firebaseUtils . batch ( function ( snap ) {
Original file line number Diff line number Diff line change @@ -83,6 +83,30 @@ describe('$firebaseArray', function () {
8383 expect ( spy ) . toHaveBeenCalledWith ( arr . $ref ( ) . child ( lastId ) ) ;
8484 } ) ;
8585
86+ it ( 'should wait for promise resolution to update array' , function ( ) {
87+ var queue = [ ] ;
88+ function addPromise ( snap , prevChild ) {
89+ return new $utils . promise (
90+ function ( resolve ) {
91+ queue . push ( resolve ) ;
92+ } ) . then ( function ( name ) {
93+ var data = $firebaseArray . prototype . $$added . call ( arr , snap , prevChild ) ;
94+ data . name = name ;
95+ return data ;
96+ } ) ;
97+ }
98+ arr = stubArray ( null , $firebaseArray . $extend ( { $$added :addPromise } ) ) ;
99+ expect ( arr . length ) . toBe ( 0 ) ;
100+ arr . $add ( { userId :'1234' } ) ;
101+ flushAll ( arr . $ref ( ) ) ;
102+ expect ( arr . length ) . toBe ( 0 ) ;
103+ expect ( queue . length ) . toBe ( 1 ) ;
104+ queue [ 0 ] ( 'James' ) ;
105+ $timeout . flush ( ) ;
106+ expect ( arr . length ) . toBe ( 1 ) ;
107+ expect ( arr [ 0 ] . name ) . toBe ( 'James' )
108+ } ) ;
109+
86110 it ( 'should reject promise on fail' , function ( ) {
87111 var successSpy = jasmine . createSpy ( 'resolve spy' ) ;
88112 var errSpy = jasmine . createSpy ( 'reject spy' ) ;
You can’t perform that action at this time.
0 commit comments