gongxiangp2/scripts/test-upload-cleanup.ts
chenpei ea9076df45 feat: 实现统一的下载错误处理系统并修复产品全案数据库Schema
- 创建统一的下载错误处理模块 (lib/download-errors.ts)
- 实现13种错误类型分类和中文错误消息
- 后端统一使用 createDownloadError 创建标准化错误响应
- 前端统一使用 parseDownloadError 解析错误并显示
- 修复正式系统数据库Schema,添加产品全案相关字段和表
- 执行数据库迁移:添加 task_no, task_status, task_fetched_at 字段
- 创建 material_assets, api_keys, api_call_logs 表
2026-01-05 17:52:42 +08:00

77 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 测试上传状态清理功能
* 验证 generateFileId 和 deleteUploadState 的导出和基本功能
*/
// 模拟浏览器环境
const mockFile = {
name: 'test.zip',
size: 10 * 1024 * 1024, // 10MB
lastModified: Date.now(),
} as File
async function testCleanupFunctions() {
console.log('\n=== 测试上传状态清理功能 ===\n')
try {
// 动态导入(模拟浏览器环境)
const chunkUploadModule = await import('../lib/chunk-upload')
// 测试 1: 验证 generateFileId 已导出
console.log('✅ 测试 1: 验证 generateFileId 已导出')
if (typeof chunkUploadModule.generateFileId === 'function') {
console.log(' ✓ generateFileId 函数存在')
// 测试生成文件ID
const fileId = chunkUploadModule.generateFileId(mockFile as File)
console.log(` ✓ 生成文件ID: ${fileId}`)
console.log(` ✓ 文件ID格式正确: ${fileId.startsWith('file-')}`)
} else {
throw new Error('generateFileId 函数未导出')
}
// 测试 2: 验证 deleteUploadState 已导出
console.log('\n✅ 测试 2: 验证 deleteUploadState 已导出')
if (typeof chunkUploadModule.deleteUploadState === 'function') {
console.log(' ✓ deleteUploadState 函数存在')
// 测试删除状态(使用不存在的ID,应该不会报错)
try {
await chunkUploadModule.deleteUploadState('test-file-id')
console.log(' ✓ deleteUploadState 可以正常调用(即使状态不存在)')
} catch (error) {
console.log(` ⚠ deleteUploadState 调用出错(可能是浏览器环境问题): ${error}`)
}
} else {
throw new Error('deleteUploadState 函数未导出')
}
// 测试 3: 验证 chunkUpload 函数存在
console.log('\n✅ 测试 3: 验证 chunkUpload 函数存在')
if (typeof chunkUploadModule.chunkUpload === 'function') {
console.log(' ✓ chunkUpload 函数存在')
} else {
throw new Error('chunkUpload 函数未导出')
}
console.log('\n✅ 所有测试通过!')
console.log('\n📝 修复验证:')
console.log(' - generateFileId 已正确导出')
console.log(' - deleteUploadState 已正确导出')
console.log(' - 可以在 UploadModal 中动态导入使用')
console.log(' - 错误处理逻辑可以正常工作\n')
} catch (error) {
console.error('\n❌ 测试失败:', error)
process.exit(1)
}
}
// 在 Node.js 环境中运行(仅验证导出)
if (typeof window === 'undefined') {
testCleanupFunctions().catch(console.error)
} else {
console.log('在浏览器环境中,请手动测试')
}