ForgeFlow-ERP/frontend/scripts/test-purchase-order-sales-auto-fill.mjs
2026-06-12 16:00:56 +08:00

63 lines
2.0 KiB
JavaScript

import assert from "node:assert/strict";
import fs from "node:fs";
import path from "node:path";
const viewPath = path.resolve("src/views/PurchaseOrderView.vue");
const source = fs.readFileSync(viewPath, "utf8");
assert.match(
source,
/function\s+scheduleSalesOrderPurchaseAutoFill\s*\(/,
"purchase order view should schedule automatic sales-order purchase detail generation"
);
assert.match(
source,
/watch\(\s*\(\)\s*=>\s*normalizedSalesOrderIds\(form\.sales_order_ids\)\.join\(","\)[\s\S]*scheduleSalesOrderPurchaseAutoFill\(\)/,
"sales order selection changes should trigger automatic purchase detail generation"
);
assert.match(
source,
/function\s+applySalesOrderPurchase\s*\(\s*\{\s*automatic\s*=\s*false\s*}\s*=\s*\{\}\s*\)/,
"sales order purchase generation should support automatic and manual refresh modes"
);
assert.match(
source,
/重新带出采购明细/,
"manual button should be kept as a refresh action instead of the required first step"
);
assert.match(
source,
/ref="salesOrderPickerRef"\s+class="order-tag-picker"\s+@pointerdown\.stop\s+@mousedown\.stop\s+@click\.stop/,
"sales order picker should keep internal clicks from bubbling into unrelated close handlers"
);
assert.match(
source,
/@click\.stop="toggleSalesOrder\(order\.order_id\)"/,
"sales order option clicks should be handled by the picker itself"
);
assert.match(
source,
/function\s+toggleSalesOrder\s*\(orderId\)[\s\S]*salesOrderPickerOpen\.value\s*=\s*false/,
"selecting or unselecting one sales order should close the picker; selecting another requires focusing the search box again"
);
assert.doesNotMatch(
source,
/function\s+toggleSalesOrder\s*\(orderId\)[\s\S]*salesOrderPickerOpen\.value\s*=\s*true/,
"sales order selection should not force the picker to stay open after choosing one row"
);
assert.doesNotMatch(
source,
/请重新按销售订单带出采购建议/,
"selection changes should no longer ask the user to manually bring out purchase suggestions"
);
console.log("purchase order sales auto-fill checks passed");