后端补充高风险链路测试

This commit is contained in:
yml
2026-05-21 14:10:41 +08:00
parent 84ca9cac09
commit 5711d38c8f
4 changed files with 158 additions and 2 deletions
@@ -169,3 +169,105 @@ test('redeemClaimTaskWithInventoryFallbackWithDeps invalidates missing CDKEY and
],
)
})
test('redeemClaimTaskWithInventoryFallbackWithDeps waits for inventory when used code has no replacement', async () => {
const events = []
const consumed = []
const reserveCalls = []
const context = {
task: {
id: 57,
browser_session_id: 'txbs-used',
},
orderItem: {
sku_code: 'df-cdk-used',
},
}
const initialInventoryItem = {
id: 7,
display_value: 'USED1234CODE5678',
credential_type: 'tencent_code',
inventory_group_code: 'B组',
}
let thrown = null
try {
await redeemClaimTaskWithInventoryFallbackWithDeps(
context,
initialInventoryItem,
{
redeemTencentBrowserSession: async () => ({
redeem: {
final: {
redeem: {
popup: {
text: '兑换结果',
detail: '兑换码已使用。',
},
},
},
},
}),
markInventoryItemConsumed: async (inventoryItemId, reason, updatedAt) => {
consumed.push({ inventoryItemId, reason, updatedAt })
return { id: inventoryItemId, status: 'consumed', invalid_reason: reason, updated_at: updatedAt }
},
reserveInventoryForTask: async (payload) => {
reserveCalls.push(payload)
return null
},
createTaskEvent: async (taskId, eventType, payload, createdAt) => {
events.push({ taskId, eventType, payload, createdAt })
},
nowIso: () => '2026-04-14T12:05:00.000Z',
},
)
} catch (error) {
thrown = error
}
assert.ok(thrown)
assert.equal(thrown.errorCode, 'claim_inventory_replacement_exhausted')
assert.equal(thrown.redeemTaskState.taskStatus, 'waiting_inventory')
assert.equal(thrown.redeemTaskState.inventoryStatus, 'pending')
assert.equal(thrown.redeemTaskState.deliveryStatus, 'pending')
assert.equal(thrown.redeemTaskState.attempts.length, 1)
assert.deepEqual(consumed, [
{
inventoryItemId: 7,
reason: '兑换码已使用。',
updatedAt: '2026-04-14T12:05:00.000Z',
},
])
assert.deepEqual(reserveCalls, [
{
skuCode: 'df-cdk-used',
taskId: 57,
credentialType: 'tencent_code',
roleKey: 'primary_code',
inventoryGroupCodes: ['B组'],
},
])
assert.deepEqual(
events.map((event) => ({
taskId: event.taskId,
eventType: event.eventType,
payload: event.payload,
createdAt: event.createdAt,
})),
[
{
taskId: 57,
eventType: 'claim_redeem_code_used',
payload: {
inventoryItemId: 7,
codeMasked: 'USED****5678',
resultCode: '',
resultMessage: '兑换码已使用。',
},
createdAt: '2026-04-14T12:05:00.000Z',
},
],
)
})