Files
admin-web/src/modules/unified-orders/components/OrderFulfillmentTreePanel.test.ts
T
2026-08-14 19:59:32 +08:00

40 lines
1.8 KiB
TypeScript

import { readFileSync } from 'node:fs'
import { resolve } from 'node:path'
import { describe, expect, it } from 'vitest'
const source = readFileSync(resolve(process.cwd(), 'src/modules/unified-orders/components/OrderFulfillmentTreePanel.vue'), 'utf8')
describe('OrderFulfillmentTreePanel contract', () => {
it('shows root conservation fields and fragment picking quantities', () => {
for (const label of ['原始总量', '累计已装', '当前余量', '本单计划', '已拣', '未拣']) {
expect(source).toContain(label)
}
expect(source).toContain('历史双子单模型')
expect(source).toContain('新拆分不会再生成已装子单')
expect(source).toContain('inboundCode?: string | null')
expect(source).toContain("props.inboundCode || '暂缺'")
expect(source).not.toContain('tree.rootOrderNo')
expect(source).not.toContain('tree.rootOrderId')
expect(source).not.toContain('row.orderNo')
})
it('covers loading, error, empty and responsive states', () => {
expect(source).toContain('正在加载拆分履约')
expect(source).toContain('拆分履约暂时无法加载')
expect(source).toContain('<ApiErrorMeta')
expect(source).toContain('暂无拆分分片')
expect(source).toContain('@media (max-width: 720px)')
})
it('translates fragment roles and statuses instead of exposing backend enums', () => {
expect(source).toContain('unifiedOrderFulfillmentRoleLabel(row.splitRole)')
expect(source).toContain('unifiedOrderFulfillmentStatusLabel(row.status, row.splitRole)')
expect(source).not.toContain(':status="row.status')
expect(source).not.toContain('return role ||')
})
it('renders fulfillment fragments with the native table grid contract', () => {
expect(source).toContain('row-key="orderId" border stripe')
})
})