优化
This commit is contained in:
@@ -642,15 +642,41 @@ test('opens billing-weight confirmation independently from order details', () =>
|
||||
assert.match(source, /unavailable-message="未推送费用"/)
|
||||
})
|
||||
|
||||
test('uses one published-fee dialog for billing-weight confirmation on every order row', () => {
|
||||
test('only offers published-fee confirmation for pending orders with confirmation permission', () => {
|
||||
const actions = source.slice(source.indexOf('function getOrderRowActions'), source.indexOf('function getOrderRowActions') + 1800)
|
||||
assert.match(actions, /actions\.push\(\{ key: 'fee', label: '确认计费重', run: \(\) => openFeeConfirmation\(order\) \}\)/)
|
||||
assert.doesNotMatch(actions, /customerFeeConfirmationRequired|label: '确认费用'|key: 'weight'/)
|
||||
assert.match(actions, /if \(canConfirmInboundFee\.value && order\.businessSummary\.customerFeeConfirmationRequired\) \{\s*actions\.push\(\{ key: 'fee'/)
|
||||
assert.doesNotMatch(actions, /label: '确认费用'|key: 'weight'/)
|
||||
assert.doesNotMatch(source, /ChargeableWeightDialog|weightConfirmationOrderId/)
|
||||
assert.match(source, /:row-actions="getOrderRowActions"/)
|
||||
assert.match(orderStoreSource, /customerFeeConfirmationRequired: summary\?\.customerFeeConfirmationRequired \?\? false/)
|
||||
})
|
||||
|
||||
test('hides confirmation for confirmed, unpushed and unauthorized orders and refreshes after confirmation', () => {
|
||||
const start = source.indexOf('function getOrderRowActions')
|
||||
const end = source.indexOf('\nasync function copyOrder', start)
|
||||
const body = source.slice(start, end)
|
||||
.replace('function getOrderRowActions(row: object): TableAction[]', 'function getOrderRowActions(row)')
|
||||
.replace('const order = row as FirstLegOrder', 'const order = row')
|
||||
.replace('const actions: TableAction[]', 'const actions')
|
||||
const actionsFor = new Function('canConfirmInboundFee', 'canCreateOrder', 'canEditOrder',
|
||||
'canOfferCancellation', 'eligibleCustomsDetail', 'openFeeConfirmation',
|
||||
`${body}; return getOrderRowActions`)
|
||||
for (const [permitted, pending] of [[true, true], [true, false], [false, true], [false, false]]) {
|
||||
const opened = []
|
||||
const order = { id: 'order-1', businessSummary: { customerFeeConfirmationRequired: pending } }
|
||||
const getActions = actionsFor({ value: permitted }, { value: false }, { value: false },
|
||||
() => false, () => false, row => opened.push(row.id))
|
||||
const confirm = getActions(order).filter(action => action.key === 'fee')
|
||||
assert.equal(confirm.length, permitted && pending ? 1 : 0)
|
||||
if (confirm.length) {
|
||||
confirm[0].run()
|
||||
assert.deepEqual(opened, ['order-1'])
|
||||
}
|
||||
}
|
||||
assert.match(source, /function handleInboundFeeConfirmed\(\) \{\s*if \(!isCreatePage\.value && !isDetailPage\.value\) void loadOrderPage\(\)/)
|
||||
})
|
||||
|
||||
test('submits only selected draft orders in one batch action', () => {
|
||||
assert.match(source, /selectedDraftOrders = computed\(\(\) => selectedOrders\.value\.filter\(\(order\) => order\.status === 'DRAFT'\)\)/)
|
||||
assert.match(source, /Promise\.allSettled\(ids\.map\(id => store\.submitSaved/)
|
||||
|
||||
Reference in New Issue
Block a user