Files
shanxia2.0/web-admin/scripts/cert-form-rules.test.ts
T
wuzilongandCursor 8e9536332a feat: 保存运输证件、报销付款和开发流程的当前实现。
补齐证书齐备、证件折算、移动用证和合同绑定,并带上报销批量发放、付款备注以及个人开发流程升级,便于继续讨论已安排计划的调整规则。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-04 21:42:33 +08:00

91 lines
2.6 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
attachmentCount,
dropsLockedPlate,
keptPlates,
missingCertLabel,
productIdentity,
referenceRowLocked,
scopeExpands,
statusChoices
} from '../src/views/m/pl/plan-cert/cert-form-rules'
test('an empty certificate names the first missing field and does not invent a unit', () => {
assert.equal(missingCertLabel('purchase', { quantityUnit: '' }), '编号')
assert.equal(
missingCertLabel('purchase', {
certNo: 'G1',
productNameOnCert: '硫酸',
totalQty: '1',
quantityUnit: '',
validUseText: '多次有效',
buyerName: '甲',
sellerName: '乙'
}),
'数量单位'
)
assert.equal(
missingCertLabel('transport', {
certNo: 'Y1',
productNameOnCert: '硫酸',
totalQty: '1',
quantityUnit: 'dun',
validUseText: '多次有效',
shipperName: '山峡'
}),
''
)
})
test('exactly one attachment is counted and status only moves to suspended, closed or void', () => {
assert.equal(attachmentCount(' a.png, ,b.pdf '), 2)
assert.equal(attachmentCount(''), 0)
assert.deepEqual(
statusChoices('active').map(([value]) => value),
['active', 'suspended', 'closed', 'void']
)
assert.deepEqual(
statusChoices('closed').map(([value]) => value),
['closed']
)
assert.deepEqual(
statusChoices('void').map(([value]) => value),
['void']
)
})
test('locked plates stay and a linked purchase reference cannot be edited', () => {
assert.equal(dropsLockedPlate(['皖A'], ['皖B']), true)
assert.deepEqual(keptPlates(['皖A'], ['皖B', '皖A']), ['皖A', '皖B'])
assert.equal(
referenceRowLocked(false, { id: 'ref-1', purchaseCertId: 'cert-1' }, ['ref-1']),
true
)
assert.equal(referenceRowLocked(false, { id: 'ref-2', purchaseCertId: null }, ['ref-1']), false)
})
test('a void or closed certificate cannot gain a contract, a product, or a restored product', () => {
assert.equal(scopeExpands('void', true, [], []), true)
assert.equal(scopeExpands('closed', true, [], []), true)
assert.equal(
scopeExpands(
'void',
false,
[{ contractProductId: 'line-1', scopeStatus: 'inactive' }],
[{ contractProductId: 'line-1', scopeStatus: 'active' }]
),
true
)
assert.equal(
scopeExpands(
'active',
false,
[{ contractProductId: 'line-1', scopeStatus: 'active' }],
[{ contractProductId: 'line-1', scopeStatus: 'inactive' }]
),
false
)
assert.equal(productIdentity([{ contractProductId: 'b' }, { contractProductId: 'a' }]), 'a\nb')
})