Files
order_site/apps/frontend/tests/consignment-matching-config.test.ts
T

64 lines
2.9 KiB
TypeScript

import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'
function read(relativePath: string) {
return readFileSync(new URL(relativePath, import.meta.url).pathname, 'utf8')
}
test('管理端:订单服务之后必须存在寄卖配置 tab', () => {
const tabs = read('../src/utils/admin-worker-platform-tabs.ts')
assert.ok(tabs.includes("'consignment-config'"), '合法 tab 名单必须包含 consignment-config')
assert.ok(
tabs.includes("'consignment-config': [['admin-consignment-profiles']"),
'切到寄卖配置必须刷新配置查询',
)
const page = read('../src/pages/admin/AdminWorkerPlatformPage.tsx')
assert.ok(page.includes('ConsignmentConfigPanel'), '页面必须挂载寄卖配置面板')
const orderServiceIndex = page.indexOf("label: '订单服务'")
const consignmentIndex = page.indexOf("label: '寄卖配置'")
assert.ok(
orderServiceIndex > 0 && consignmentIndex > orderServiceIndex,
'寄卖配置必须在订单服务之后',
)
})
test('寄卖配置面板:必须覆盖保证金/服务费/数量限制/匹配/内部匹配/超时/降价', () => {
const panel = read('../src/pages/admin/panels/ConsignmentConfigPanel.tsx')
for (const label of [
'打手端 tab 名称',
'开启保证金',
'按数量',
'开启服务费',
'开启单人寄售上限',
'匹配模式',
'自动匹配开关',
'内部匹配等待(分钟)',
'代练超时(分钟)',
'开启降价提示',
]) {
assert.ok(panel.includes(label), `寄卖配置面板缺少「${label}」`)
}
})
test('打手端:寄卖页必须按已发布配置动态生成 tab,并支持改价', () => {
const page = read('../src/pages/worker/WorkerConsignmentPage.tsx')
assert.ok(page.includes('fetchWorkerConsignmentProfiles'), '必须拉取已发布寄卖配置')
assert.ok(page.includes('consignmentProfiles.map'), '必须按配置生成 tab')
assert.ok(page.includes('修改售价'), '在售寄卖必须提供改价入口')
assert.ok(page.includes('updateWorkerConsignmentPrice'), '改价必须调用专用接口')
assert.ok(page.includes('priceDropSuggestion'), '必须展示降价建议')
assert.ok(page.includes('寄售数量'), '发布表单必须支持数量')
})
test('工单页:必须挂载内部库存匹配弹窗,并支持状态 internal_matching', () => {
const panel = read('../src/pages/admin/panels/WorkOrdersPanel.tsx')
assert.ok(panel.includes('ConsignmentWorkOrderMatchModal'), '工单页必须挂载内部匹配弹窗')
assert.ok(panel.includes("'internal_matching'"), '状态筛选必须支持内部匹配中')
const shared = read('../src/pages/admin/panels/shared.tsx')
assert.ok(shared.includes("internal_matching: '内部匹配中'"), '状态文案必须包含内部匹配中')
assert.ok(shared.includes("internal_matching: 'magenta'"), '状态配色必须包含内部匹配中')
})