File tree Expand file tree Collapse file tree 2 files changed +28
-4
lines changed Expand file tree Collapse file tree 2 files changed +28
-4
lines changed Original file line number Diff line number Diff line change @@ -154,12 +154,19 @@ function MockBrowser() {
154
154
self . lastCookieHash = { } ;
155
155
self . deferredFns = [ ] ;
156
156
157
- self . defer = function ( fn ) {
158
- self . deferredFns . push ( fn ) ;
157
+ self . defer = function ( fn , delay ) {
158
+ delay = delay || 0 ;
159
+ self . deferredFns . push ( { time :( self . defer . now + delay ) , fn :fn } ) ;
160
+ self . deferredFns . sort ( function ( a , b ) { return a . time - b . time ; } ) ;
159
161
} ;
160
162
161
- self . defer . flush = function ( ) {
162
- while ( self . deferredFns . length ) self . deferredFns . shift ( ) ( ) ;
163
+ self . defer . now = 0 ;
164
+
165
+ self . defer . flush = function ( time ) {
166
+ self . defer . now += ( time || 0 ) ;
167
+ while ( self . deferredFns . length && self . deferredFns [ 0 ] . time <= self . defer . now ) {
168
+ self . deferredFns . shift ( ) . fn ( ) ;
169
+ }
163
170
} ;
164
171
}
165
172
MockBrowser . prototype = {
Original file line number Diff line number Diff line change @@ -201,7 +201,24 @@ describe('mocks', function(){
201
201
browser . defer . flush ( 10 ) ;
202
202
expect ( browser . defer . now ) . toEqual ( 20 ) ;
203
203
expect ( log ) . toEqual ( 'A;B;C;' ) ;
204
+ } ) ;
205
+
206
+ it ( 'should defer and flush over time' , function ( ) {
207
+ browser . defer ( logFn ( 'A' ) , 1 ) ;
208
+ browser . defer ( logFn ( 'B' ) , 2 ) ;
209
+ browser . defer ( logFn ( 'C' ) , 3 ) ;
210
+
211
+ browser . defer . flush ( 0 ) ;
212
+ expect ( browser . defer . now ) . toEqual ( 0 ) ;
213
+ expect ( log ) . toEqual ( '' ) ;
214
+
215
+ browser . defer . flush ( 1 ) ;
216
+ expect ( browser . defer . now ) . toEqual ( 1 ) ;
217
+ expect ( log ) . toEqual ( 'A;' ) ;
204
218
219
+ browser . defer . flush ( 2 ) ;
220
+ expect ( browser . defer . now ) . toEqual ( 3 ) ;
221
+ expect ( log ) . toEqual ( 'A;B;C;' ) ;
205
222
} ) ;
206
223
} ) ;
207
224
You can’t perform that action at this time.
0 commit comments