| 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 |