Files
order_site/apps/frontend/tests/consignment-quantity-edit.test.ts
T

56 lines
2.4 KiB
TypeScript

import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import test from 'node:test'
function read(relativePath: string) {
return readFileSync(fileURLToPath(new URL(relativePath, import.meta.url)), 'utf8').replace(
/\r\n/g,
'\n',
)
}
const panel = read('../src/pages/admin/panels/ConsignmentConfigPanel.tsx')
const page = read('../src/pages/worker/WorkerConsignmentPage.tsx')
test('管理端:数量开关语义必须是「允许修改寄售数量」/「可改 / 固定 1」', () => {
assert.ok(panel.includes('label="允许修改寄售数量"'), '文案必须改成是否允许修改')
assert.ok(panel.includes('extra="关闭后打手端数量固定为 1,输入框禁用"'), '必须说明关闭后的行为')
assert.ok(panel.includes('checkedChildren="可改"'), '开启文案应为「可改」')
assert.ok(panel.includes('unCheckedChildren="固定 1"'), '关闭文案应为「固定 1」')
assert.ok(!panel.includes('label="显示寄售数量"'), '旧的「显示寄售数量」必须移除')
})
test('打手端:数量字段必须始终渲染,关闭时禁用并灰显 1', () => {
assert.ok(
page.includes('const quantityLocked = selectedProfile?.config.fields.quantity === false'),
'必须由 fields.quantity === false 推导锁定状态',
)
assert.ok(
page.includes('disabled={quantityLocked || quantityLimit.blocked}'),
'锁定时或达到数量上限时输入框必须禁用',
)
assert.ok(
page.includes("quantityLocked ? '该分类数量固定为 1,不可修改' : ''"),
'锁定时要给出固定 1 的提示',
)
assert.ok(page.includes('extra={quantityExtra}'), '数量提示必须走统一文案')
assert.ok(
!page.includes('selectedProfile?.config.fields.quantity !== false ? ('),
'不能再按开关隐藏数量字段',
)
assert.ok(page.includes('initialValue={1}'), '数量默认值必须为 1')
assert.ok(
page.includes('const quantityForDeposit = quantityLocked ? 1 :'),
'锁定后押金必须按 1 件计算',
)
})
test('打手端:数量始终显示,价格区固定三列,不再按数量切两列', () => {
assert.ok(page.includes('className="worker-consignment-price-grid"'), '价格区必须固定三列')
assert.ok(
!page.includes("selectedProfile?.config.fields.quantity === false ? ' is-two' : ''"),
'不能再用 is-two 布局',
)
})