@@ -238,4 +238,69 @@ test.group('QueueManager', () => {
238238 assert . strictEqual ( secondAdapter , adapters [ 1 ] )
239239 assert . equal ( destroyedCount , 1 )
240240 } )
241+
242+ test ( 'should reset fake state when reinitializing' , async ( { assert, cleanup } ) => {
243+ type LabeledAdapter = Adapter & { label : string }
244+
245+ const createAdapter = ( label : string ) : LabeledAdapter => ( {
246+ label,
247+ setWorkerId ( ) { } ,
248+ pop : async ( ) => null ,
249+ popFrom : async ( ) => null ,
250+ recoverStalledJobs : async ( ) => 0 ,
251+ completeJob : async ( ) => { } ,
252+ failJob : async ( ) => { } ,
253+ retryJob : async ( ) => { } ,
254+ getJob : async ( ) => null ,
255+ push : async ( ) => { } ,
256+ pushOn : async ( ) => { } ,
257+ pushLater : async ( ) => { } ,
258+ pushLaterOn : async ( ) => { } ,
259+ pushMany : async ( ) => { } ,
260+ pushManyOn : async ( ) => { } ,
261+ size : async ( ) => 0 ,
262+ sizeOf : async ( ) => 0 ,
263+ destroy : async ( ) => { } ,
264+ upsertSchedule : async ( ) => 'schedule-id' ,
265+ createSchedule : async ( ) => 'schedule-id' ,
266+ getSchedule : async ( ) => null ,
267+ listSchedules : async ( ) => [ ] ,
268+ updateSchedule : async ( ) => { } ,
269+ deleteSchedule : async ( ) => { } ,
270+ claimDueSchedule : async ( ) => null ,
271+ } )
272+
273+ cleanup ( async ( ) => {
274+ await QueueManager . destroy ( )
275+ } )
276+
277+ await QueueManager . init ( {
278+ default : 'custom' ,
279+ adapters : {
280+ custom : ( ) => createAdapter ( 'first' ) ,
281+ } ,
282+ } )
283+
284+ const firstAdapter = QueueManager . use ( ) as LabeledAdapter
285+ const firstFakeAdapter = QueueManager . fake ( )
286+
287+ await QueueManager . init ( {
288+ default : 'custom' ,
289+ adapters : {
290+ custom : ( ) => createAdapter ( 'second' ) ,
291+ } ,
292+ } )
293+
294+ const secondFakeAdapter = QueueManager . fake ( )
295+
296+ assert . notStrictEqual ( secondFakeAdapter , firstFakeAdapter )
297+ assert . strictEqual ( QueueManager . use ( ) , secondFakeAdapter )
298+
299+ QueueManager . restore ( )
300+
301+ const restoredAdapter = QueueManager . use ( ) as LabeledAdapter
302+
303+ assert . notStrictEqual ( restoredAdapter , firstAdapter )
304+ assert . equal ( restoredAdapter . label , 'second' )
305+ } )
241306} )
0 commit comments