优化:补充半自动履约开发 Mock 与内置 Connector
This commit is contained in:
@@ -339,3 +339,77 @@ test(
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
test(
|
||||
'开发 Mock 可生成半自动履约测试单并回填任务',
|
||||
{ skip: !TEST_DATABASE_URL ? '未设置 SEMI_AUTO_TASK_TEST_DATABASE_URL' : false },
|
||||
async () => {
|
||||
process.env.DATABASE_URL = TEST_DATABASE_URL
|
||||
process.env.ENABLE_DEV_MOCK = '1'
|
||||
const { closeDb, query } = await import('../../db/client.js')
|
||||
const { createSemiAutoMock } = await import('../dev-mock/dev-mock-service.js')
|
||||
const suffix = `${Date.now()}_${Math.floor(Math.random() * 1_000_000)}`
|
||||
const orderNo = `IT-MOCK-SA-${suffix}`
|
||||
const skuKey = `半自动Mock-${suffix}`
|
||||
let orderId = 0
|
||||
let configId = 0
|
||||
try {
|
||||
const result = await createSemiAutoMock({
|
||||
orderNo,
|
||||
skuName: skuKey,
|
||||
quantity: 1,
|
||||
pageTitle: 'Mock 集成测试',
|
||||
})
|
||||
orderId = result.orderId
|
||||
configId = result.configId
|
||||
assert.ok(result.orderItemId > 0)
|
||||
assert.ok(result.fulfillmentId > 0)
|
||||
assert.ok(result.taskId > 0)
|
||||
assert.ok(['mock', 'external'].includes(result.connectorMode))
|
||||
assert.equal(result.customerPath, `/c/${encodeURIComponent(orderNo)}`)
|
||||
|
||||
const row = await query<{
|
||||
channel: string
|
||||
fulfillment_status: string
|
||||
fulfillment_config_id: number
|
||||
semi_auto_enabled: boolean
|
||||
semi_auto_platform: string
|
||||
login_status: string
|
||||
binding_status: string
|
||||
execution_status: string
|
||||
}>(
|
||||
`
|
||||
SELECT
|
||||
f.channel,
|
||||
f.status AS fulfillment_status,
|
||||
f.fulfillment_config_id,
|
||||
cfg.semi_auto_enabled,
|
||||
cfg.semi_auto_platform,
|
||||
task.login_status,
|
||||
task.binding_status,
|
||||
task.execution_status
|
||||
FROM semi_auto_tasks task
|
||||
JOIN fulfillments f ON f.id = task.fulfillment_id
|
||||
JOIN manual_fulfillment_configs cfg ON cfg.id = task.manual_fulfillment_config_id
|
||||
WHERE task.order_item_id = $1
|
||||
`,
|
||||
[result.orderItemId],
|
||||
)
|
||||
assert.equal(row.rows[0]?.channel, 'manual')
|
||||
assert.equal(row.rows[0]?.fulfillment_status, 'assigned')
|
||||
assert.equal(Number(row.rows[0]?.fulfillment_config_id), result.configId)
|
||||
assert.equal(row.rows[0]?.semi_auto_enabled, true)
|
||||
assert.equal(row.rows[0]?.semi_auto_platform, 'huya')
|
||||
assert.equal(row.rows[0]?.login_status, 'waiting_login')
|
||||
assert.equal(row.rows[0]?.binding_status, 'not_started')
|
||||
assert.equal(row.rows[0]?.execution_status, 'waiting_customer')
|
||||
} finally {
|
||||
if (orderId > 0) await query('DELETE FROM orders WHERE id = $1', [orderId])
|
||||
if (configId > 0) {
|
||||
await query('DELETE FROM manual_fulfillment_configs WHERE id = $1', [configId])
|
||||
}
|
||||
delete process.env.ENABLE_DEV_MOCK
|
||||
await closeDb()
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user