Files

49 lines
2.4 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { readFile } from 'node:fs/promises'
test('同柜不可拆组HTTP验收锁定公开接口与防绕过矩阵', async () => {
const source = await readFile(new URL('./coload-groups.mjs', import.meta.url), 'utf8')
for (const fragment of [
'/api/platform/v1/first-leg/coload-groups',
'/api/platform/v1/first-leg/coload-groups/by-inbound-code/',
'/group-assignments',
'/inbound-assignments',
'/plans/by-booking/',
'创建同键同载荷精确重放',
'创建同键异载荷返回并发冲突',
'不同目的仓港仍可创建同柜不可拆组',
'跨国内仓或跨渠道创建整组被拒绝且不落组',
'业务摘要只返回状态、成员数和完整入仓码',
'/recommend',
'第二柜智能推荐请求成功',
'智能推荐不会只取同柜组部分成员或部分箱数',
'智能推荐全不取后整组仍ACTIVE',
'组成员不能单独调整箱数',
'组成员不能单独删除',
'整组原子移除',
'容量竞争时智能推荐不因整组容量失败',
'容量竞争时同柜组只能整组全取或全不取',
'推荐候选包含当前目标同柜组且成员身份精确',
'ACTIVE同柜组整组取消成功',
'同柜组PDA原子批次记录短拣异常',
'同柜组任一成员短拣时完成被拒绝',
'短拣完成拒绝后任务、父子树和组锁零漂移',
'同柜组足量完成命令可靠受理',
'足量完成整组已消费、全部入库完成且不生成余量子单',
'未成组普通单自动预装不回归',
'未成组普通单仍按既有规则生成唯一余量子单',
'拆分余量子单仍可与同仓同渠道订单创建同柜组',
'拆分身份不影响当前WAIT_SPLIT片段完整纳组',
'拆分余量建组不改写既有父子数量事实',
'为Admin页面保留ACTIVE未分配跨目的仓组',
'页面验收保留组仍为ACTIVE且未锁定',
]) assert.match(source, new RegExp(fragment.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')))
assert.doesNotMatch(source, /跨仓库渠道或目的仓港创建整组被拒绝/)
assert.doesNotMatch(source, /已有父子拆分订单创建同柜组被拒绝/)
assert.doesNotMatch(source, /push-preload/)
assert.match(source, /import \{ channelGroup \} from '\.\/smart-loading-channel-group\.mjs'/)
assert.equal((source.match(/channelGroupCode:\s*channelGroup\(/g) || []).length, 6)
})