74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import {
|
|
loadCalendarPages,
|
|
manualCalendarDays,
|
|
manualCopyText,
|
|
validateManualDraft
|
|
} from '../src/views/pl/dispatch-calendar/manual-model'
|
|
|
|
const row = (id: string, date = '2026-10-26', vehicleId = 'v1') => ({
|
|
id,
|
|
dispatchDate: date,
|
|
vehicleId,
|
|
licensePlate: '皖H12345',
|
|
productId: 'p1',
|
|
productName: '液碱',
|
|
origin: '山峡',
|
|
destination: '云栋',
|
|
remark: '',
|
|
createTime: '',
|
|
updateTime: ''
|
|
})
|
|
test('同车同日同路线保留独立车次,车辆筛选与汇总一致', () => {
|
|
const days = manualCalendarDays(
|
|
[row('1'), row('2'), row('3', '2026-10-26', 'v2'), row('4', '2026-11-01')],
|
|
'2026-10',
|
|
'v1'
|
|
)
|
|
const day = days.find((d) => d.date === '2026-10-26')!
|
|
assert.equal(day.rows.length, 2)
|
|
assert.equal(day.vehicles.length, 1)
|
|
assert.equal(day.products[0].count, 2)
|
|
assert.ok(days.some((d) => d.date === '2026-10-01' && d.rows.length === 0))
|
|
})
|
|
test('完整分页加载,不悄悄展示截断数据', async () => {
|
|
const calls: number[] = []
|
|
const rows = await loadCalendarPages(async ({ page }) => {
|
|
calls.push(page)
|
|
return { list: [row(String(page))], total: 3 }
|
|
})
|
|
assert.deepEqual(calls, [1, 2, 3])
|
|
assert.equal(rows?.length, 3)
|
|
await assert.rejects(
|
|
loadCalendarPages(async () => ({ list: [], total: 1 })),
|
|
/不完整/
|
|
)
|
|
})
|
|
test('过期请求不继续加载,不返回旧月份数据', async () => {
|
|
let current = true
|
|
assert.equal(
|
|
await loadCalendarPages(
|
|
async () => {
|
|
current = false
|
|
return { list: [row('1')], total: 3 }
|
|
},
|
|
() => current
|
|
),
|
|
null
|
|
)
|
|
})
|
|
test('复制保留重复车次,文本不混入实际运输计划', () => {
|
|
const text = manualCopyText('2026-10-26', [row('1'), row('2')])
|
|
assert.match(text, /2026-10-26 派车计划/)
|
|
assert.equal(text.split('山峡 → 云栋').length - 1, 2)
|
|
})
|
|
test('表单拒绝空白、无效日期,保留手写起止地', () => {
|
|
assert.equal(validateManualDraft({ ...row('1'), origin: ' ' }), '请填写始发地')
|
|
assert.equal(
|
|
validateManualDraft({ ...row('1'), dispatchDate: '2026-02-30' }),
|
|
'请选择有效的派车日期'
|
|
)
|
|
assert.equal(validateManualDraft(row('1')), '')
|
|
})
|