75 lines
2.1 KiB
TypeScript
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: '请填写转账金额' }])
|
|
})
|
|
})
|