|
|
@@ -239,6 +239,37 @@ describe('scheduler', () => {
|
|
|
expect(calls).toEqual(['cb1', 'cb2', 'job1'])
|
|
|
})
|
|
|
|
|
|
+ it('should insert pre jobs without ids first during flushing', async () => {
|
|
|
+ const calls: string[] = []
|
|
|
+ const job1: SchedulerJob = () => {
|
|
|
+ calls.push('job1')
|
|
|
+ queueJob(job3)
|
|
|
+ queueJob(job4)
|
|
|
+ }
|
|
|
+ // job1 has no id
|
|
|
+ job1.flags! |= SchedulerJobFlags.PRE
|
|
|
+ const job2: SchedulerJob = () => {
|
|
|
+ calls.push('job2')
|
|
|
+ }
|
|
|
+ job2.id = 1
|
|
|
+ job2.flags! |= SchedulerJobFlags.PRE
|
|
|
+ const job3: SchedulerJob = () => {
|
|
|
+ calls.push('job3')
|
|
|
+ }
|
|
|
+ // job3 has no id
|
|
|
+ job3.flags! |= SchedulerJobFlags.PRE
|
|
|
+ const job4: SchedulerJob = () => {
|
|
|
+ calls.push('job4')
|
|
|
+ }
|
|
|
+ // job4 has no id
|
|
|
+ job4.flags! |= SchedulerJobFlags.PRE
|
|
|
+
|
|
|
+ queueJob(job1)
|
|
|
+ queueJob(job2)
|
|
|
+ await nextTick()
|
|
|
+ expect(calls).toEqual(['job1', 'job3', 'job4', 'job2'])
|
|
|
+ })
|
|
|
+
|
|
|
// #3806
|
|
|
it('queue preFlushCb inside postFlushCb', async () => {
|
|
|
const spy = vi.fn()
|
|
|
@@ -448,12 +479,20 @@ describe('scheduler', () => {
|
|
|
job2.id = 2
|
|
|
const job3 = () => calls.push('job3')
|
|
|
job3.id = 1
|
|
|
+ const job4: SchedulerJob = () => calls.push('job4')
|
|
|
+ job4.id = 2
|
|
|
+ job4.flags! |= SchedulerJobFlags.PRE
|
|
|
+ const job5: SchedulerJob = () => calls.push('job5')
|
|
|
+ // job5 has no id
|
|
|
+ job5.flags! |= SchedulerJobFlags.PRE
|
|
|
|
|
|
queueJob(job1)
|
|
|
queueJob(job2)
|
|
|
queueJob(job3)
|
|
|
+ queueJob(job4)
|
|
|
+ queueJob(job5)
|
|
|
await nextTick()
|
|
|
- expect(calls).toEqual(['job3', 'job2', 'job1'])
|
|
|
+ expect(calls).toEqual(['job5', 'job3', 'job4', 'job2', 'job1'])
|
|
|
})
|
|
|
|
|
|
test('sort SchedulerCbs based on id', async () => {
|