后端补充高风险链路测试
This commit is contained in:
@@ -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',
|
||||
},
|
||||
],
|
||||
)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user