const assert = require("node:assert/strict"); const fs = require("node:fs"); const path = require("node:path"); const test = require("node:test"); const source = fs.readFileSync(path.join(__dirname, "../src/views/foundation/product-development-process.vue"), "utf8"); test("实训任务三第二步在提交前提示首个未填写字段", () => { assert.match(source, /function getStepTwoValidationMessage\(\)[\s\S]*?请填写任务 \$\{row\.taskNo\} 的项目依赖关系/); assert.match(source, /function getStepTwoValidationMessage\(\)[\s\S]*?请填写任务 \$\{row\.taskNo\} 的开始时间[\s\S]*?请填写任务 \$\{row\.taskNo\} 的完成时间/); }); test("实训任务三第二步不完整时不请求后端校验", () => { assert.match(source, /async function saveAndGoToStepThree\(\)\s*\{[\s\S]*?const validationMessage = getStepTwoValidationMessage\(\);[\s\S]*?if \(validationMessage\) \{[\s\S]*?msgWarning\?\.\(validationMessage\)[\s\S]*?return;[\s\S]*?\}\s*checking\.value = true;[\s\S]*?checkProductDevelopmentProcessStepTwo/); }); test("实训任务三第二步可导出当前WBS排期列表", () => { assert.match(source, /@click="exportScheduleList"[\s\S]*?导出列表/); assert.match(source, /function exportScheduleList\(\)[\s\S]*?XLSX\.utils\.json_to_sheet[\s\S]*?XLSX\.writeFile[\s\S]*?产品开发WBS任务拆解与排期表\.xlsx/); }); test("实训任务三第二步使用标准SS依赖示例并采用紧凑表格", () => { assert.match(source, /placeholder="示例:开始-开始(SS)"/); assert.match(source, /\.schedule-table \.dependency-input::placeholder \{ color: rgba\(168, 220, 233, \.68\); opacity: 1; \}/); assert.match(source, /\.schedule-table \{ min-width: 1020px; \}/); assert.match(source, /\.schedule-table \.stage-cell \{ width: 7%; \}/); assert.match(source, /\.schedule-table \.task-no-cell \{ width: 7%; \}/); });