import { describe, expect, it } from 'vitest'; import { calculateInitializationProgress, describeInitializationFailure, mapInitializationSteps, type InitializationResult, } from '@/pages/Setup/initialization'; describe('setup initialization mapping', () => { it('keeps pending steps pending when initialization stops early', () => { const result: InitializationResult = { initialized: false, steps: [ { id: 'runtime', label: '安装运行环境', status: 'success', message: '/tmp/runtime' }, { id: 'workspace', label: '准备本地工作区', status: 'success', message: '本地工作区已准备' }, { id: 'model', label: '写入模型 API 配置', status: 'error', message: '当前安装包未包含模型 API 调用凭据' }, { id: 'python', label: '准备文档处理环境', status: 'pending' }, ], }; const states = mapInitializationSteps(result.steps); expect(states.map((step) => [step.id, step.status])).toEqual([ ['runtime', 'completed'], ['workspace', 'completed'], ['model', 'failed'], ['python', 'pending'], ]); expect(calculateInitializationProgress(states)).toBe(50); expect(describeInitializationFailure(result)).toContain('写入模型 API 配置:当前安装包未包含模型 API 调用凭据'); }); });