Merge branch 'main' into dev_match
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
|
||||
const page = readFileSync(new URL('../src/pages/admin/AdminTasksPage.tsx', import.meta.url), 'utf8')
|
||||
|
||||
test('任务页默认仅展示当前任务,并可切换全部历史尝试', () => {
|
||||
assert.ok(page.includes("searchParams.get('scope') === 'all' ? 'all' : 'current'"))
|
||||
assert.ok(page.includes('currentOnly: filters.scope !=='))
|
||||
assert.ok(page.includes("label: '当前任务'"))
|
||||
assert.ok(page.includes("label: '全部历史尝试'"))
|
||||
})
|
||||
@@ -0,0 +1,28 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
|
||||
test('寄售仓库必须提供通过审核入库时间范围筛选,并透传到库存查询', () => {
|
||||
const source = readFileSync(
|
||||
new URL('../src/pages/admin/panels/ConsignmentInventoryPanel.tsx', import.meta.url).pathname,
|
||||
'utf8',
|
||||
)
|
||||
|
||||
assert.ok(
|
||||
source.includes("from '@/components/admin/AdminDatePicker'"),
|
||||
'必须复用后台日期范围控件',
|
||||
)
|
||||
assert.ok(source.includes("placeholder={['入库开始日期', '入库结束日期']}"), '必须明确筛选口径')
|
||||
assert.ok(source.includes('dateFrom: inboundRange?.[0]'), '开始日期必须透传后端')
|
||||
assert.ok(source.includes('dateTo: inboundRange?.[1]'), '结束日期必须透传后端')
|
||||
assert.ok(
|
||||
source.includes('inboundRange?.[0],\n inboundRange?.[1],'),
|
||||
'日期变化必须进入 React Query key 并触发重新查询',
|
||||
)
|
||||
assert.ok(
|
||||
source
|
||||
.slice(source.indexOf('<AdminRangePicker'), source.indexOf('<Input.Search'))
|
||||
.includes('setPage(1)'),
|
||||
'修改日期筛选后必须回到第一页',
|
||||
)
|
||||
})
|
||||
@@ -0,0 +1,32 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
|
||||
const panel = readFileSync(
|
||||
new URL('../src/pages/admin/AdminFulfillmentChannelPage.tsx', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
|
||||
test('待分类队列按问题类型拆分动作', () => {
|
||||
assert.ok(panel.includes('去补配置'))
|
||||
assert.ok(panel.includes('处理人工复核'))
|
||||
assert.ok(panel.includes('确认重试'))
|
||||
assert.ok(panel.includes('解除锁定'))
|
||||
assert.ok(panel.includes('等待补配置'))
|
||||
assert.ok(panel.includes('用户已申请退款'))
|
||||
assert.ok(panel.includes('上游履约已取消'))
|
||||
assert.ok(panel.includes('PENDING_ISSUE_CATEGORY_OPTIONS'))
|
||||
assert.ok(panel.includes("label: '配置待补'"))
|
||||
assert.ok(panel.includes("label: '售后关闭'"))
|
||||
})
|
||||
|
||||
test('重开历史载体必须二次确认且不会处理锁定项', () => {
|
||||
assert.ok(panel.includes('确认重开履约载体'))
|
||||
assert.ok(panel.includes('retryInactiveCarrier: true'))
|
||||
assert.ok(panel.includes('不会重开失败或关闭的旧任务'))
|
||||
assert.ok(panel.includes('unlockPendingChannelGroup'))
|
||||
assert.ok(panel.includes('hasOnlyRetryableIssues'))
|
||||
assert.ok(panel.includes('issueCodes: retryableIssueCodes'))
|
||||
assert.ok(panel.includes('issueCodes: autoRetryableIssueCodes'))
|
||||
assert.ok(!panel.includes('PENDING_RETRYABLE_TERMINAL_REASONS'))
|
||||
})
|
||||
@@ -0,0 +1,17 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFile } from 'node:fs/promises'
|
||||
import test from 'node:test'
|
||||
|
||||
test('人工成本配置直接展示标准商品,不再要求按日期扫描内部 SKU', async () => {
|
||||
const source = await readFile(
|
||||
new URL('../src/pages/admin/cost-center/ManualSkuConfigPanel.tsx', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
|
||||
assert.ok(source.includes('人工标准商品与成本配置一一对应'))
|
||||
assert.ok(source.includes("title: '人工标准商品'"))
|
||||
assert.ok(source.includes('SKU:{row.skuKey}'))
|
||||
assert.ok(!source.includes('扫描内部 SKU'))
|
||||
assert.ok(!source.includes('DatePicker.RangePicker'))
|
||||
assert.ok(!source.includes('rematchAdminManualFulfillments'))
|
||||
})
|
||||
@@ -0,0 +1,23 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
|
||||
const panel = readFileSync(
|
||||
new URL('../src/pages/admin/panels/VoucherConsumePolicyPanel.tsx', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
|
||||
test('最近核销任务提供关键词、平台、渠道和状态筛选', () => {
|
||||
assert.ok(panel.includes('placeholder="任务号 / 订单号 / 平台单号"'))
|
||||
assert.ok(panel.includes('placeholder="全部平台"'))
|
||||
assert.ok(panel.includes('placeholder="全部渠道"'))
|
||||
assert.ok(panel.includes('placeholder="全部状态"'))
|
||||
assert.ok(panel.includes('resetJobFilters'))
|
||||
})
|
||||
|
||||
test('最近核销任务使用服务端分页', () => {
|
||||
assert.ok(panel.includes('buildAdminTablePagination'))
|
||||
assert.ok(panel.includes('total: jobsQuery.data?.data.total'))
|
||||
assert.ok(panel.includes('setPageSize(nextPageSize)'))
|
||||
assert.ok(!panel.includes('pagination={false}\n scroll={{ x: 1200 }}'))
|
||||
})
|
||||
@@ -0,0 +1,21 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { readFile } from 'node:fs/promises'
|
||||
import test from 'node:test'
|
||||
|
||||
test('第三方卡券面板提供安全删除入口并格式化生效时间', async () => {
|
||||
const [panel, service] = await Promise.all([
|
||||
readFile(
|
||||
new URL('../src/pages/admin/cost-center/VoucherSkuPanel.tsx', import.meta.url),
|
||||
'utf8',
|
||||
),
|
||||
readFile(new URL('../src/services/admin/cost-center.ts', import.meta.url), 'utf8'),
|
||||
])
|
||||
|
||||
assert.ok(panel.includes('deleteAdminVoucherProduct'))
|
||||
assert.ok(panel.includes('DeleteOutlined'))
|
||||
assert.ok(panel.includes('Popconfirm'))
|
||||
assert.ok(panel.includes('已有历史订单或成本快照时会自动归档'))
|
||||
assert.ok(panel.includes('formatAdminDateTime(value)'))
|
||||
assert.ok(service.includes('/api/v1/admin/cost-center/voucher-products/${productId}'))
|
||||
assert.ok(service.includes("action: 'deleted' | 'archived'"))
|
||||
})
|
||||
Reference in New Issue
Block a user