ForgeFlow-ERP/frontend/scripts/test-sales-purchase-document-archive-ui.mjs
2026-06-12 16:00:56 +08:00

104 lines
3.1 KiB
JavaScript

import { existsSync, readFileSync } from "node:fs";
import { resolve } from "node:path";
function readRequiredFile(file) {
const path = resolve(process.cwd(), file);
if (!existsSync(path)) {
throw new Error(`Missing required file: ${file}`);
}
return readFileSync(path, "utf8");
}
function assertIncludes(source, snippet, label) {
if (!source.includes(snippet)) {
throw new Error(`${label} missing required snippet: ${snippet}`);
}
}
const api = readRequiredFile("src/services/api.js");
const sales = readRequiredFile("src/views/SalesPlanningView.vue");
const purchase = readRequiredFile("src/views/PurchaseOrderView.vue");
assertIncludes(api, "export async function postDownloadResource", "api.js");
assertIncludes(api, "method: \"POST\"", "postDownloadResource");
assertIncludes(api, "JSON.stringify(payload)", "postDownloadResource");
for (const snippet of [
"DocumentPaper",
"DocumentGrid",
"DocumentLineTable",
"DocumentArchiveActions",
"salesDocumentHeaderFields",
"salesDocumentLineColumns",
"title=\"销售订单\"",
"销售确认",
"客户确认",
"财务复核",
"制单人",
"保存并生成PDF归档",
"保存并归档中...",
"previewDocumentArchive",
"downloadDocumentArchive",
"regenerateDocumentArchive",
"batchDownloadSalesArchives",
"postDownloadResource",
"archive_status",
"sales-archive-cell",
"sales-archive-actions-compact",
"sales-order",
"归档"
]) {
assertIncludes(sales, snippet, "SalesPlanningView.vue");
}
for (const snippet of [
"openResource(`/document-archives/${typeKey}/${businessId}/latest/preview`)",
"downloadResource(`/document-archives/${typeKey}/${businessId}/latest/download`",
"postResource(`/document-archives/${typeKey}/${businessId}/generate`, {})",
"postDownloadResource(\"/document-archives/batch-download\"",
"document_type: \"sales-order\""
]) {
assertIncludes(sales, snippet, "Sales archive actions");
}
for (const snippet of [
"DocumentPaper",
"DocumentGrid",
"DocumentLineTable",
"DocumentArchiveActions",
"purchaseDocumentHeaderFields",
"purchaseDocumentLineColumns",
"title=\"采购订单\"",
"采购确认",
"供应商确认",
"仓库接收",
"制单人",
"保存并生成PDF归档",
"更新并生成PDF归档",
"保存并归档中...",
"previewDocumentArchive",
"downloadDocumentArchive",
"regenerateDocumentArchive",
"batchDownloadPurchaseArchives",
"postDownloadResource",
"archive_status",
"purchase-archive-cell",
"purchase-archive-actions-compact",
"purchase-order",
"归档"
]) {
assertIncludes(purchase, snippet, "PurchaseOrderView.vue Task 8 assertions");
}
for (const snippet of [
"openResource(`/document-archives/${typeKey}/${businessId}/latest/preview`)",
"downloadResource(`/document-archives/${typeKey}/${businessId}/latest/download`",
"postResource(`/document-archives/${typeKey}/${businessId}/generate`, {})",
"postDownloadResource(\"/document-archives/batch-download\"",
"document_type: \"purchase-order\""
]) {
assertIncludes(purchase, snippet, "Purchase archive actions");
}
console.log("sales/purchase document archive UI static tests passed");