Files
order_site/apps/frontend/tests/worker-product-name.test.ts
T

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)
})