34 lines
1.8 KiB
TypeScript
34 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/shared/components/InboundCodeRelationshipDrawer.vue'), 'utf8')
|
|
|
|
describe('InboundCodeRelationshipDrawer contract', () => {
|
|
it('loads only permission-authorized server read models and keeps failures isolated', () => {
|
|
expect(source).toContain('props.canReadBase')
|
|
expect(source).toContain('props.canReadLoading')
|
|
expect(source).toContain('props.canReadOverseas')
|
|
expect(source).toContain('getPlatformInboundCodeAssociation(code)')
|
|
expect(source).toContain('getLoadingAssociationSummary(code)')
|
|
expect(source).toContain('getOverseasInboundCodeRelationship(code)')
|
|
expect(source).toContain('await Promise.all(tasks)')
|
|
expect(source).toContain('<ApiErrorMeta :details="baseError"')
|
|
expect(source).toContain('<ApiErrorMeta :details="overseasError"')
|
|
expect(source).toContain('服务端未找到该入仓码的海外关联数据')
|
|
expect(source).not.toMatch(/listPlatform|customerId\)|warehouseId\)/)
|
|
})
|
|
|
|
it('shows business numbers and names without rendering internal ids', () => {
|
|
expect(source).toContain('baseAssociation.inboundCode')
|
|
expect(source).toContain('baseAssociation.orderNo')
|
|
expect(source).toContain('baseAssociation.customerName')
|
|
expect(source).toContain('baseAssociation.destinationWarehouseName')
|
|
expect(source).not.toContain('{{ baseAssociation.orderId')
|
|
expect(source).not.toContain('{{ baseAssociation.customerId')
|
|
expect(source).not.toContain('{{ baseAssociation.destinationWarehouseId')
|
|
expect(source).toContain('text-overflow:ellipsis')
|
|
expect(source).toContain(':title="display(baseAssociation.inboundCode)"')
|
|
})
|
|
})
|