Files
zkxw/web-admin/src/utils/presign-save-auto-submit.test.ts
T
2026-10-15 23:21:07 +08:00

75 lines
2.1 KiB
TypeScript

import { describe, it } from 'node:test'
import assert from 'node:assert/strict'
import {
collectDfjTransferIds,
flattenSamplePaymentTransfers,
formatAutoSubmitFinanceFailureMessage,
submitDfjTransfersOnSave
} from './presign-save-auto-submit'
describe('presign-save-auto-submit', () => {
it('collects only dfj transfers with ids', () => {
assert.deepEqual(
collectDfjTransferIds([
{ id: 't1', payStatus: 'dfj' },
{ id: 't2', payStatus: 'jfqrz' },
{ id: '', payStatus: 'dfj' },
{ payStatus: 'dfj' },
{ id: 't3', payStatus: 'dfj' }
]),
['t1', 't3']
)
})
it('formats partial failure message', () => {
assert.equal(
formatAutoSubmitFinanceFailureMessage([
{ id: 't1', message: '请选择转账方式' },
{ id: 't2', message: '请填写转账金额' }
]),
'订单已保存,但有 2 笔提交财务确认失败:请选择转账方式;请填写转账金额'
)
})
it('formats protocol entity label', () => {
assert.equal(
formatAutoSubmitFinanceFailureMessage([{ id: 't1', message: '请选择转账方式' }], '协议'),
'协议已保存,但有 1 笔提交财务确认失败:请选择转账方式'
)
})
it('flattens sample payment transfers', () => {
assert.deepEqual(
flattenSamplePaymentTransfers([
{
schedules: [
{ transfers: [{ id: 'a', payStatus: 'dfj' }] },
{ transfers: [{ id: 'b', payStatus: 'jfqrz' }, null] }
]
},
{ schedules: [] }
]),
[
{ id: 'a', payStatus: 'dfj' },
{ id: 'b', payStatus: 'jfqrz' }
]
)
})
it('continues submitting after one failure', async () => {
const calls: string[] = []
const failures = await submitDfjTransfersOnSave(
[
{ id: 'ok', payStatus: 'dfj' },
{ id: 'bad', payStatus: 'dfj' }
],
async (id) => {
calls.push(id)
if (id === 'bad') throw new Error('请填写转账金额')
}
)
assert.deepEqual(calls, ['ok', 'bad'])
assert.deepEqual(failures, [{ id: 'bad', message: '请填写转账金额' }])
})
})