70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
|
|
import {
|
|
resolveHallDepositAmount,
|
|
resolveHallProductName,
|
|
resolveHallRemainingQuantity,
|
|
resolveHallRewardAmount,
|
|
} from '../src/utils/worker-product-name.ts'
|
|
|
|
test('拼单大厅标题按剩余份数更新阿拉伯数字规格', () => {
|
|
assert.equal(
|
|
resolveHallProductName({
|
|
productName: '指挥官密钥15个',
|
|
sharing: { enabled: true, totalQuantity: 15 },
|
|
sharingProgress: { joinedQuantity: 3 },
|
|
}),
|
|
'指挥官密钥12个',
|
|
)
|
|
})
|
|
|
|
test('拼单大厅标题兼容中文数字规格', () => {
|
|
assert.equal(
|
|
resolveHallProductName({
|
|
productName: '指挥官密钥十五份',
|
|
sharing: { enabled: true, totalQuantity: 15 },
|
|
sharingProgress: { joinedQuantity: 4 },
|
|
}),
|
|
'指挥官密钥11份',
|
|
)
|
|
})
|
|
|
|
test('普通单保留原始标题', () => {
|
|
assert.equal(
|
|
resolveHallProductName({
|
|
productName: '指挥官密钥1个',
|
|
sharing: { enabled: false, totalQuantity: 1 },
|
|
sharingProgress: { joinedQuantity: 0 },
|
|
}),
|
|
'指挥官密钥1个',
|
|
)
|
|
})
|
|
|
|
test('立即抢单的份数、报酬和保证金都按剩余数量计算', () => {
|
|
const order = {
|
|
productName: '指挥官密钥15个',
|
|
rewardAmount: 10_500,
|
|
freezeDepositAmount: 1_500,
|
|
sharing: { enabled: true, totalQuantity: 15, unitReward: 700 },
|
|
sharingProgress: { joinedQuantity: 3 },
|
|
}
|
|
|
|
assert.equal(resolveHallRemainingQuantity(order), 12)
|
|
assert.equal(resolveHallRewardAmount(order), 8_400)
|
|
assert.equal(resolveHallDepositAmount(order), 1_200)
|
|
})
|
|
|
|
test('拼单份数用完后剩余报酬和保证金归零', () => {
|
|
const order = {
|
|
rewardAmount: 10_500,
|
|
freezeDepositAmount: 1_500,
|
|
sharing: { enabled: true, totalQuantity: 15, unitReward: 700 },
|
|
sharingProgress: { joinedQuantity: 15 },
|
|
}
|
|
|
|
assert.equal(resolveHallRemainingQuantity(order), 0)
|
|
assert.equal(resolveHallRewardAmount(order), 0)
|
|
assert.equal(resolveHallDepositAmount(order), 0)
|
|
})
|