返回 oh-my-ppt
pptx-import-progress.test.ts
根目录 / tests / unit / pptx-import-progress.test.ts
1 import { describe, expect, it } from 'vitest'
2 import { createPptxImportPostPersistProgress } from '../../src/main/io/pptx-import/progress'
3
4 describe('pptx import progress', () => {
5 it('reserves 100% completion until post-import style work finishes', () => {
6 const totalPages = 8
7 const progress = [
8 createPptxImportPostPersistProgress('session-records', totalPages),
9 createPptxImportPostPersistProgress('style-extraction', totalPages),
10 createPptxImportPostPersistProgress('design-contract', totalPages),
11 createPptxImportPostPersistProgress('design-contract-persist', totalPages),
12 createPptxImportPostPersistProgress('completed', totalPages)
13 ]
14
15 expect(progress.map((item) => item.progress)).toEqual([92, 94, 96, 98, 100])
16 expect(progress.slice(0, -1).every((item) => item.stage !== 'completed')).toBe(true)
17 expect(progress.at(-1)).toMatchObject({
18 stage: 'completed',
19 progress: 100,
20 label: 'PPTX 导入完成',
21 totalPages
22 })
23 })
24
25 it('keeps failed style extraction below completed progress', () => {
26 expect(createPptxImportPostPersistProgress('style-skipped', 3)).toMatchObject({
27 stage: 'database',
28 progress: 98,
29 label: '已跳过风格提取,正在完成导入',
30 totalPages: 3
31 })
32 })
33 })
34
34 lines TYPESCRIPT