修复容器测试并补订单回归
This commit is contained in:
@@ -8,7 +8,7 @@ import { ENV_OVERRIDES } from './env-overrides.js'
|
||||
|
||||
const CURRENT_DIR = path.dirname(fileURLToPath(import.meta.url))
|
||||
const BACKEND_ROOT = path.resolve(CURRENT_DIR, '../..')
|
||||
const WORKSPACE_ROOT = path.resolve(BACKEND_ROOT, '../..')
|
||||
const WORKSPACE_ROOT = process.env.WORKSPACE_ROOT || path.resolve(BACKEND_ROOT, '../..')
|
||||
|
||||
const SPECIAL_RUNTIME_ENV_NAMES = ['APP_BASE_URL', 'CLAIM_BASE_URL']
|
||||
|
||||
@@ -31,6 +31,7 @@ const DEPLOYMENT_ONLY_ENV_NAMES = [
|
||||
'VITE_API_TARGET',
|
||||
'VITE_ALLOWED_HOSTS',
|
||||
'VITE_WORKER_SITE_URL',
|
||||
'WORKSPACE_ROOT',
|
||||
'WORKER_SITE_ADDR',
|
||||
]
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import type {
|
||||
WorkerUserRow,
|
||||
} from '../../repositories/worker-platform/index.js'
|
||||
import {
|
||||
buildWorkOrderWhere,
|
||||
resolveWorkOrderShareCancellationStatus,
|
||||
resolveWorkOrderShareJoinQuantity,
|
||||
resolveOpenSharingSyncReward,
|
||||
@@ -36,6 +37,7 @@ import {
|
||||
resolveSkuNameQuantity,
|
||||
resolveWorkOrderRulePricing,
|
||||
resolveWorkOrderTemplateSyncPrice,
|
||||
resolveWorkerShareStatus,
|
||||
resolveWorkOrderSharingEnabled,
|
||||
validateWorkerPassword,
|
||||
} from './index.js'
|
||||
@@ -817,6 +819,29 @@ test('mapWorkOrderForWorker 使用个人拼单份数、金额、状态和接单
|
||||
assert.equal(mapped.assignedAt, '2026-08-18T09:09:08.000Z')
|
||||
})
|
||||
|
||||
test('打手拼单状态以个人份额为准,母工单终态优先', () => {
|
||||
assert.equal(resolveWorkerShareStatus('open', 'joined'), 'in_progress')
|
||||
assert.equal(resolveWorkerShareStatus('open', 'submitted'), 'pending_acceptance')
|
||||
assert.equal(resolveWorkerShareStatus('open', 'accepted'), 'accepted')
|
||||
assert.equal(resolveWorkerShareStatus('open', 'cancelled'), 'cancelled')
|
||||
assert.equal(resolveWorkerShareStatus('problem', 'joined'), 'problem')
|
||||
})
|
||||
|
||||
test('打手订单状态筛选使用个人拼单份额状态', () => {
|
||||
const { joins, whereClause, params } = buildWorkOrderWhere({
|
||||
workerSharingId: 42,
|
||||
statuses: ['in_progress', 'pending_acceptance'],
|
||||
})
|
||||
|
||||
assert.deepEqual(params, [42, ['in_progress', 'pending_acceptance']])
|
||||
assert.match(joins, /work_order_shares share_source/)
|
||||
assert.match(joins, /worker_share\.worker_id = \$1/)
|
||||
assert.match(whereClause, /WHEN 'joined' THEN 'in_progress'/)
|
||||
assert.match(whereClause, /WHEN 'submitted' THEN 'pending_acceptance'/)
|
||||
assert.match(whereClause, /worker_share\.status/)
|
||||
assert.match(whereClause, /= ANY\(\$2::text\[\]\)/)
|
||||
})
|
||||
|
||||
test('后台拼单聚合状态同时收敛筛选语义和操作能力', () => {
|
||||
const waitingForClaim = mapWorkOrderAdmin(buildWorkOrderRow({ status: 'open' }))
|
||||
assert.equal(waitingForClaim.status, 'open')
|
||||
|
||||
@@ -58,6 +58,7 @@ import type {
|
||||
import { formatDateTime } from '@/utils/date-time'
|
||||
import { getImageIdentity } from '@/utils/image-identity'
|
||||
import { useIsMobile } from '@/utils/use-is-mobile'
|
||||
import { buildWorkerOrderQuery } from '@/utils/worker-order-query'
|
||||
|
||||
const STATUS_OPTIONS = [
|
||||
{ value: 'in_progress', label: '代练中' },
|
||||
@@ -86,15 +87,6 @@ type FeedbackFormValues = {
|
||||
content?: string
|
||||
}
|
||||
|
||||
function buildWorkerOrderQuery(status: string, keyword: string, page: number, pageSize: number) {
|
||||
return {
|
||||
keyword,
|
||||
page,
|
||||
pageSize,
|
||||
...(status === 'vip_evidence_pending' ? { vipEvidencePending: true } : { status }),
|
||||
}
|
||||
}
|
||||
|
||||
type NoteTheme = 'success' | 'processing' | 'danger' | 'warning' | 'purple' | 'default'
|
||||
|
||||
const PRESET_NOTE_TAGS: Array<{ label: string; theme: NoteTheme }> = [
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
export function buildWorkerOrderQuery(
|
||||
status: string,
|
||||
keyword: string,
|
||||
page: number,
|
||||
pageSize: number,
|
||||
) {
|
||||
return {
|
||||
keyword,
|
||||
page,
|
||||
pageSize,
|
||||
...(status === 'vip_evidence_pending' ? { vipEvidencePending: true } : { status }),
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
import { buildWorkerOrderQuery } from '../src/utils/worker-order-query.ts'
|
||||
|
||||
test('打手订单页按普通状态筛选并保留分页参数', () => {
|
||||
assert.deepEqual(buildWorkerOrderQuery('in_progress', '王者荣耀', 2, 20), {
|
||||
status: 'in_progress',
|
||||
keyword: '王者荣耀',
|
||||
page: 2,
|
||||
pageSize: 20,
|
||||
})
|
||||
})
|
||||
|
||||
test('打手订单页待补图筛选使用独立标记', () => {
|
||||
assert.deepEqual(buildWorkerOrderQuery('vip_evidence_pending', '', 1, 20), {
|
||||
vipEvidencePending: true,
|
||||
keyword: '',
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
})
|
||||
})
|
||||
|
||||
test('打手订单页选择全部订单时不附加状态筛选值', () => {
|
||||
assert.deepEqual(buildWorkerOrderQuery('', '', 1, 20), {
|
||||
status: '',
|
||||
keyword: '',
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user