@@ -142,7 +142,7 @@ describe("IntervalTicker", () => {
142
142
expect ( handler . mock . calls [ 3 ] [ 0 ] ) . toBe ( true ) ;
143
143
} ) ;
144
144
145
- it ( 'should backoff when the handler fails' , async ( ) => {
145
+ it ( 'should backoff when the handler fails if backoffController is provided ' , async ( ) => {
146
146
const handler = vi . fn ( ) . mockRejectedValue ( new Error ( ) ) ;
147
147
148
148
const backoffController = {
@@ -168,6 +168,23 @@ describe("IntervalTicker", () => {
168
168
expect ( backoffController . backoff ) . toHaveBeenCalledTimes ( 3 ) ;
169
169
} ) ;
170
170
171
+ it ( 'should use the regular interval when the handler fails if backoffController is not provided' , async ( ) => {
172
+ const handler = vi . fn ( ) . mockRejectedValue ( new Error ( ) ) ;
173
+
174
+ const intervalTicker = new IntervalTicker ( 30000 ) ;
175
+ intervalTicker . onTick ( handler ) ;
176
+
177
+ intervalTicker . start ( ) ;
178
+
179
+ await advanceTimersByTime ( 30000 ) ;
180
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
181
+
182
+ await advanceTimersByTime ( 10000 ) ;
183
+ expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
184
+ await advanceTimersByTime ( 20000 ) ;
185
+ expect ( handler ) . toHaveBeenCalledTimes ( 2 ) ;
186
+ } ) ;
187
+
171
188
it ( 'should reset the backoffController after handler success' , async ( ) => {
172
189
const handler = vi . fn ( ) . mockRejectedValueOnce ( new Error )
173
190
. mockRejectedValueOnce ( new Error ( ) )
@@ -247,6 +264,10 @@ describe("IntervalTicker", () => {
247
264
248
265
intervalTicker . stop ( ) ;
249
266
267
+ ret . resolve ( undefined ) ;
268
+ await ret . promise ;
269
+
270
+ await advanceTimersByTime ( 2000 ) ;
250
271
await advanceTimersByTime ( 2000 ) ;
251
272
expect ( handler ) . toHaveBeenCalledTimes ( 1 ) ;
252
273
} ) ;
0 commit comments