35 lines
1.8 KiB
TypeScript
35 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|||
|
|
import { readFileSync } from 'node:fs'
|
||
|
|
import { resolve } from 'node:path'
|
||
|
|
|
||
|
|
const panel = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/components/ContainerFeesPanel.vue'), 'utf8')
|
||
|
|
const detail = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/components/LoadingListDetailDrawer.vue'), 'utf8')
|
||
|
|
|
||
|
|
describe('ContainerFeesPanel contract', () => {
|
||
|
|
it('is exposed from loading-list detail and derives customer context from real items', () => {
|
||
|
|
expect(detail).toContain('<ContainerFeesPanel :plan-id="summary.planId" :customers="feeCustomers" />')
|
||
|
|
expect(detail).toContain('item.accountId')
|
||
|
|
expect(panel).toContain('该柜次包含多个客户,请先选择费用归属客户')
|
||
|
|
expect(panel).toContain('装柜明细缺少客户归属,无法安全维护费用')
|
||
|
|
})
|
||
|
|
|
||
|
|
it('covers create, review, reject, approved adjustment and void actions', () => {
|
||
|
|
expect(panel).toContain('新增费用')
|
||
|
|
expect(panel).toContain("row.reviewStatus === 'PENDING'")
|
||
|
|
expect(panel).toContain('approveContainerFee')
|
||
|
|
expect(panel).toContain('rejectContainerFee')
|
||
|
|
expect(panel).toContain("row.reviewStatus === 'APPROVED'")
|
||
|
|
expect(panel).toContain('adjustContainerFee')
|
||
|
|
expect(panel).toContain('voidContainerFee')
|
||
|
|
expect(panel).toContain('调整后版本递增并重新进入待审核状态')
|
||
|
|
})
|
||
|
|
|
||
|
|
it('shows only server allocations and supplier snapshots', () => {
|
||
|
|
expect(panel).toContain('listContainerCostDetails')
|
||
|
|
expect(panel).toContain('仅展示 Finance 已持久化结果')
|
||
|
|
expect(panel).toContain("cost.supplierName || '服务端未返回'")
|
||
|
|
expect(panel).toContain('尚无与该柜次关联的财务分摊结果')
|
||
|
|
expect(panel).not.toMatch(/allocatedAmount\s*=|allocationRate\s*=/)
|
||
|
|
})
|
||
|
|
})
|