44 lines
2.6 KiB
JavaScript
44 lines
2.6 KiB
JavaScript
const assert = require('node:assert/strict');
|
|||
|
|
const fs = require('node:fs');
|
||
|
|
const path = require('node:path');
|
||
|
|
const vm = require('node:vm');
|
||
|
|
|
||
|
|
const root = path.resolve(__dirname, '..');
|
||
|
|
const moduleHtml = fs.readFileSync(path.join(root, 'prototype-src/modules/08-finance.html'), 'utf8');
|
||
|
|
const overlays = fs.readFileSync(path.join(root, 'prototype-src/overlays.html'), 'utf8');
|
||
|
|
const appJs = fs.readFileSync(path.join(root, 'prototype-src/app.js'), 'utf8');
|
||
|
|
|
||
|
|
assert.ok(moduleHtml.includes('付款状态:'), '查询区缺少付款状态标签');
|
||
|
|
assert.ok(appJs.includes('openSettlementApVoucher'), '列表缺少上传付款凭证入口');
|
||
|
|
assert.ok(appJs.includes('openSettlementApApproval'), '列表缺少审批入口');
|
||
|
|
assert.ok(overlays.includes('id="modal-settlement-ap-voucher"'), '缺少付款凭证弹框');
|
||
|
|
assert.ok(overlays.includes('id="settlement-ap-voucher-files"'), '付款凭证文件框缺少 ID');
|
||
|
|
assert.ok(overlays.includes('multiple'), '付款凭证不支持多文件');
|
||
|
|
assert.ok(overlays.includes('id="modal-settlement-ap-approval"'), '缺少审批弹框');
|
||
|
|
assert.ok(overlays.includes('审批通过'), '审批弹框缺少通过操作');
|
||
|
|
assert.ok(overlays.includes('审批驳回'), '审批弹框缺少驳回操作');
|
||
|
|
|
||
|
|
function loadFunction(name, nextName) {
|
||
|
|
const start = appJs.indexOf(`function ${name}`);
|
||
|
|
const end = appJs.indexOf(`\nfunction ${nextName}`, start);
|
||
|
|
assert.ok(start >= 0 && end > start, `缺少可测试函数 ${name}`);
|
||
|
|
const sandbox = {};
|
||
|
|
vm.runInNewContext(`${appJs.slice(start, end)}\nresult=${name};`, sandbox);
|
||
|
|
return sandbox.result;
|
||
|
|
}
|
||
|
|
|
||
|
|
const actionState = loadFunction('getSettlementApApprovalActionState', 'getSettlementApApprovalResult');
|
||
|
|
const approvalResult = loadFunction('getSettlementApApprovalResult', 'formatSettlementApVoucherSize');
|
||
|
|
const normalize = value => JSON.parse(JSON.stringify(value));
|
||
|
|
|
||
|
|
assert.deepEqual(normalize(actionState('已审批')), {canSubmit:false,readonly:true});
|
||
|
|
assert.deepEqual(normalize(actionState('审批中')), {canSubmit:true,readonly:false});
|
||
|
|
assert.deepEqual(normalize(actionState('已驳回')), {canSubmit:true,readonly:false});
|
||
|
|
assert.deepEqual(normalize(approvalResult('pass')), {approveStatus:'已审批',status:'生效'});
|
||
|
|
assert.deepEqual(normalize(approvalResult('reject')), {approveStatus:'已驳回',status:'待审批'});
|
||
|
|
assert.ok(appJs.includes('驳回原因不能为空'), '缺少驳回原因必填校验');
|
||
|
|
assert.ok(appJs.includes('paymentVouchers'), '数据未保存付款凭证数组');
|
||
|
|
assert.ok(appJs.includes('10 * 1024 * 1024'), '缺少 10MB 文件大小校验');
|
||
|
|
|
||
|
|
console.log('结算单应付付款凭证与审批回归校验通过');
|