@@ -32,6 +32,16 @@ function rawPath(firebaseRef) {
32
32
* @return {{waiter: waiter, watchesInitializedWaiter: watchesInitializedWaiter, unregister: unregister, addExpectedEvents: addExpectedEvents} }
33
33
*/
34
34
export function eventTestHelper ( pathAndEvents , helperName ?) {
35
+ let resolve , reject ;
36
+ let promise = new Promise ( ( pResolve , pReject ) => {
37
+ resolve = pResolve ;
38
+ reject = pReject ;
39
+ } ) ;
40
+ let initResolve , initReject ;
41
+ const initPromise = new Promise ( ( pResolve , pReject ) => {
42
+ initResolve = pResolve ;
43
+ initReject = pReject ;
44
+ } ) ;
35
45
var expectedPathAndEvents = [ ] ;
36
46
var actualPathAndEvents = [ ] ;
37
47
var pathEventListeners = { } ;
@@ -58,6 +68,14 @@ export function eventTestHelper(pathAndEvents, helperName?) {
58
68
// test framework is calling the waiter... makes for easier debugging.
59
69
waiter ( ) ;
60
70
}
71
+
72
+ // We want to trigger the promise resolution if valid, so try to call waiter as events
73
+ // are coming back.
74
+ try {
75
+ if ( waiter ( ) ) {
76
+ resolve ( ) ;
77
+ }
78
+ } catch ( e ) { }
61
79
} ;
62
80
} ;
63
81
@@ -152,6 +170,11 @@ export function eventTestHelper(pathAndEvents, helperName?) {
152
170
pathEventListeners [ path . toString ( ) ] . unlisten = listenOnPath ( path ) ;
153
171
}
154
172
}
173
+
174
+ promise = new Promise ( ( pResolve , pReject ) => {
175
+ resolve = pResolve ;
176
+ reject = pReject ;
177
+ } ) ;
155
178
} ;
156
179
157
180
addExpectedEvents ( pathAndEvents ) ;
@@ -166,6 +189,7 @@ export function eventTestHelper(pathAndEvents, helperName?) {
166
189
actualPathAndEvents . splice ( actualPathAndEvents . length - initializationEvents , initializationEvents ) ;
167
190
initializationEvents = 0 ;
168
191
192
+ initResolve ( ) ;
169
193
return true ;
170
194
} ;
171
195
@@ -179,9 +203,11 @@ export function eventTestHelper(pathAndEvents, helperName?) {
179
203
180
204
eventCleanupHandlers . push ( unregister ) ;
181
205
return {
182
- waiter : waiter ,
183
- watchesInitializedWaiter : watchesInitializedWaiter ,
184
- unregister : unregister ,
206
+ promise,
207
+ initPromise,
208
+ waiter,
209
+ watchesInitializedWaiter,
210
+ unregister,
185
211
186
212
addExpectedEvents : function ( moreEvents ) {
187
213
addExpectedEvents ( moreEvents ) ;
0 commit comments