@@ -239,6 +239,37 @@ describe('scheduler', () => {
239239 expect ( calls ) . toEqual ( [ 'cb1' , 'cb2' , 'job1' ] )
240240 } )
241241
242+ it ( 'should insert pre jobs without ids first during flushing' , async ( ) => {
243+ const calls : string [ ] = [ ]
244+ const job1 : SchedulerJob = ( ) => {
245+ calls . push ( 'job1' )
246+ queueJob ( job3 )
247+ queueJob ( job4 )
248+ }
249+ // job1 has no id
250+ job1 . flags ! |= SchedulerJobFlags . PRE
251+ const job2 : SchedulerJob = ( ) => {
252+ calls . push ( 'job2' )
253+ }
254+ job2 . id = 1
255+ job2 . flags ! |= SchedulerJobFlags . PRE
256+ const job3 : SchedulerJob = ( ) => {
257+ calls . push ( 'job3' )
258+ }
259+ // job3 has no id
260+ job3 . flags ! |= SchedulerJobFlags . PRE
261+ const job4 : SchedulerJob = ( ) => {
262+ calls . push ( 'job4' )
263+ }
264+ // job4 has no id
265+ job4 . flags ! |= SchedulerJobFlags . PRE
266+
267+ queueJob ( job1 )
268+ queueJob ( job2 )
269+ await nextTick ( )
270+ expect ( calls ) . toEqual ( [ 'job1' , 'job3' , 'job4' , 'job2' ] )
271+ } )
272+
242273 // #3806
243274 it ( 'queue preFlushCb inside postFlushCb' , async ( ) => {
244275 const spy = vi . fn ( )
@@ -448,12 +479,20 @@ describe('scheduler', () => {
448479 job2 . id = 2
449480 const job3 = ( ) => calls . push ( 'job3' )
450481 job3 . id = 1
482+ const job4 : SchedulerJob = ( ) => calls . push ( 'job4' )
483+ job4 . id = 2
484+ job4 . flags ! |= SchedulerJobFlags . PRE
485+ const job5 : SchedulerJob = ( ) => calls . push ( 'job5' )
486+ // job5 has no id
487+ job5 . flags ! |= SchedulerJobFlags . PRE
451488
452489 queueJob ( job1 )
453490 queueJob ( job2 )
454491 queueJob ( job3 )
492+ queueJob ( job4 )
493+ queueJob ( job5 )
455494 await nextTick ( )
456- expect ( calls ) . toEqual ( [ 'job3' , 'job2' , 'job1' ] )
495+ expect ( calls ) . toEqual ( [ 'job5' , ' job3' , 'job4 ', 'job2' , 'job1' ] )
457496 } )
458497
459498 test ( 'sort SchedulerCbs based on id' , async ( ) => {
0 commit comments