61 lines
2.8 KiB
JavaScript
61 lines
2.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const root = process.cwd();
|
|
|
|
function readSource(relativePath) {
|
|
return readFileSync(path.join(root, relativePath), "utf8");
|
|
}
|
|
|
|
const router = readSource("src/router/index.js");
|
|
const app = readSource("src/App.vue");
|
|
const productionLedgerView = readSource("src/views/ProductionLedgerView.vue");
|
|
const inventoryView = readSource("src/views/InventoryLedgerView.vue");
|
|
|
|
assert.match(
|
|
router,
|
|
/component:\s*view\("ProductionLedgerView"\)/,
|
|
"router should lazy load ProductionLedgerView"
|
|
);
|
|
assert.match(
|
|
router,
|
|
/path:\s*"\/production-ledger"[\s\S]*?name:\s*"production-ledger"[\s\S]*?component:\s*view\("ProductionLedgerView"\)[\s\S]*?permission:\s*"MENU_WORK_ORDER"/,
|
|
"router should define production-ledger route with MENU_WORK_ORDER permission"
|
|
);
|
|
assert.match(
|
|
router,
|
|
/path:\s*"\/work-order-ledger"[\s\S]*?redirect:\s*\{\s*name:\s*"production-ledger"\s*\}/,
|
|
"legacy work-order-ledger route should redirect to production-ledger"
|
|
);
|
|
assert.match(
|
|
app,
|
|
/label:\s*"生产台账"[\s\S]*?to:\s*\{\s*name:\s*"production-ledger"\s*\}[\s\S]*?permission:\s*"MENU_WORK_ORDER"/,
|
|
"App.vue production menu should expose 生产台账 linked to production-ledger"
|
|
);
|
|
|
|
assert.match(
|
|
productionLedgerView,
|
|
/fetchResource\("\/production\/production-ledger\?limit=500"/,
|
|
"ProductionLedgerView should load the production ledger endpoint with limit=500"
|
|
);
|
|
assert.match(productionLedgerView, /材料库存批次号/, "ProductionLedgerView should show material stock lot number");
|
|
assert.match(productionLedgerView, /库外未闭环重量/, "ProductionLedgerView should show outside unclosed weight");
|
|
assert.match(productionLedgerView, /该批材料结单/, "ProductionLedgerView should provide material batch lock action");
|
|
assert.doesNotMatch(productionLedgerView, /容差上限/, "ProductionLedgerView should not expose tolerance limit wording to users");
|
|
assert.doesNotMatch(inventoryView, /容差上限/, "InventoryLedgerView should not expose tolerance limit wording to users");
|
|
assert.match(inventoryView, /该批材料余料结单/, "InventoryLedgerView should provide a production-surplus material batch settle option");
|
|
assert.match(inventoryView, /该批材料废料结单/, "InventoryLedgerView should provide a production-scrap material batch settle option");
|
|
assert.match(
|
|
inventoryView,
|
|
/source_doc_type:\s*isProductionSurplusInbound\.value\s*\?\s*"PRODUCTION_LEDGER"/,
|
|
"InventoryLedgerView production surplus inbound payload should link production ledger source document"
|
|
);
|
|
assert.match(
|
|
inventoryView,
|
|
/source_doc_type:\s*isProductionScrapInbound\.value\s*\?\s*"PRODUCTION_LEDGER"/,
|
|
"InventoryLedgerView production scrap inbound payload should link production ledger source document"
|
|
);
|
|
|
|
console.log("production ledger static checks passed");
|