简化履约匹配并支持mock订单测试

This commit is contained in:
yml
2026-05-27 12:55:44 +08:00
parent e8010728a4
commit dd6776c4e4
21 changed files with 1892 additions and 683 deletions
@@ -113,3 +113,85 @@ test('syncDeliveryTasksForOrderWithDeps prepares kuaishou cloud task with claim
},
])
})
test('syncDeliveryTasksForOrderWithDeps creates kuaishou cloud task from cloudtentacles name match snapshot', async () => {
const createdTasks = []
const updates = []
const dynamicOrderItems = [
{
id: 21,
order_id: 10,
sku_code: '套装-浪漫天命',
sku_name: '套装-浪漫天命',
quantity: 1,
spec_json: '{}',
item_snapshot_json: JSON.stringify({
matchMode: 'cloudtentacles_name',
cloudtentacles: {
cloudSkuId: 28,
cloudSkuName: '套装-浪漫天命',
cloudSourceKeys: ['account-a', 'account-b'],
},
}),
},
]
const result = await syncDeliveryTasksForOrderWithDeps(paidOrder, dynamicOrderItems, {
listTasksByOrderId: async () => [],
resolveFulfillmentBinding: async () => null,
getFulfillmentProfileByKey: async () => ({
id: 2,
profile_key: 'kuaishou_ct_assisted',
name: '快手 cloud 履约',
executor_key: 'kuaishou_ct_assisted',
requires_claim: false,
auto_dispatch: false,
config_json: '{}',
}),
createTask: async (input) => {
createdTasks.push(input)
return {
id: 31,
order_id: input.orderId,
order_item_id: input.orderItemId,
task_status: input.taskStatus,
executor_key: input.executorKey,
requires_claim: input.requiresClaim,
claim_token: '',
primary_claim_token_id: null,
last_error: '',
context_json: input.contextJson,
}
},
createTaskClaimToken: async () => ({
token: 'claim-token',
expired_at: '2026-04-15T12:00:00.000Z',
}),
updateTask: async (taskId, patch) => {
updates.push({ taskId, patch })
return { id: taskId, ...patch }
},
nowIso: () => '2026-04-14T12:03:00.000Z',
randomId: () => 'DT-DYNAMIC',
})
assert.equal(createdTasks.length, 1)
assert.equal(createdTasks[0].executorKey, 'kuaishou_ct_assisted')
assert.equal(createdTasks[0].profileId, 2)
assert.equal(createdTasks[0].taskStatus, 'pending_binding_prepare')
const context = JSON.parse(createdTasks[0].contextJson)
assert.equal(context.kuaishouCloudFulfillment.binding.skuId, 28)
assert.equal(context.kuaishouCloudFulfillment.binding.skuName, '套装-浪漫天命')
assert.deepEqual(context.kuaishouCloudFulfillment.binding.cloudSourceKeys, ['account-a', 'account-b'])
assert.deepEqual(context.kuaishouCloudFulfillment.deliveryItems, [
{
cloudSkuId: 28,
cloudSkuName: '套装-浪漫天命',
quantity: 1,
},
])
assert.equal(result[0]?.claim_token, 'claim-token')
assert.equal(updates[0]?.patch.claim_token, 'claim-token')
})