Files
ccdi/ruoyi-ui/tests/unit/project-list-archive-flow.test.js

84 lines
2.2 KiB
JavaScript
Raw Normal View History

2026-03-24 21:45:55 +08:00
const assert = require("assert");
const fs = require("fs");
const path = require("path");
const pagePath = path.resolve(__dirname, "../../src/views/ccdiProject/index.vue");
const dialogPath = path.resolve(
__dirname,
"../../src/views/ccdiProject/components/ArchiveConfirmDialog.vue"
);
const pageSource = fs.readFileSync(pagePath, "utf8");
const dialogSource = fs.readFileSync(dialogPath, "utf8");
assert(
pageSource.includes("delProject") && pageSource.includes("restoreProject"),
"项目列表页应引入删除和恢复接口"
);
assert(
pageSource.includes("includeDeleted: false"),
"默认查询参数应不包含已删除项目"
);
assert(
pageSource.includes(':show-deleted-tab="isProjectAdmin"'),
"已删除入口应仅对项目管理员角色展示"
);
assert(
pageSource.includes("'5': counts.status5 || 0"),
"状态统计应接入已删除数量"
);
assert(
pageSource.includes('await delProject(row.projectId)'),
"删除确认后应调用项目删除接口"
);
assert(
pageSource.includes('await restoreProject(row.projectId)'),
"恢复确认后应调用项目恢复接口"
);
assert(
pageSource.includes("项目内数据不会删除"),
"删除确认文案应明确项目内数据不会删除"
);
assert(
pageSource.includes("项目将恢复为已完成状态"),
"恢复确认文案应明确恢复到已完成状态"
);
2026-03-24 21:45:55 +08:00
assert(
pageSource.includes("await archiveProject(data.projectId)"),
"确认归档后应调用真实归档接口"
);
assert(
pageSource.includes('this.$modal.msgSuccess("项目归档成功")') ||
pageSource.includes("this.$modal.msgSuccess('项目归档成功')"),
"归档成功后应提示项目归档成功"
);
assert(
pageSource.includes("项目归档失败,请稍后重试"),
"归档失败时应有统一兜底提示"
);
[
"自动生成项目报告PDF",
"移入归档库,可随时查看",
"同时删除项目相关数据",
"归档后可从\"归档库\"中查看和恢复",
].forEach((token) => {
assert(!dialogSource.includes(token), `归档弹窗不应保留超范围文案: ${token}`);
});
assert(
!dialogSource.includes("deleteData"),
"归档弹窗不应再保留删除数据状态"
);
console.log("project-list-archive-flow test passed");