This commit is contained in:
2026-08-15 12:33:29 +08:00
parent e214672779
commit fc80d09faa
4 changed files with 220 additions and 78 deletions
@@ -5,6 +5,8 @@ import { resolve } from 'node:path'
const source = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/components/LoadingListsView.vue'), 'utf8')
const detailSource = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/components/LoadingListDetailDrawer.vue'), 'utf8')
const preloadDetailSource = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/pages/PreloadPlanDetailView.vue'), 'utf8')
const confirmedDetailSource = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/pages/ConfirmedLoadingListDetailView.vue'), 'utf8')
const routesSource = readFileSync(resolve(process.cwd(), 'src/modules/loading-lists/routes.ts'), 'utf8')
describe('LoadingListsView', () => {
it('filters both list modes by an active name-only customer selector', () => {
@@ -41,12 +43,16 @@ describe('LoadingListsView', () => {
expect(detailSource).toContain('ContainerFeesPanel')
})
it('opens preload detail as a route and confirmed detail inline on the list page', () => {
it('opens both preload and confirmed details as independent route pages', () => {
expect(source).toContain("name: 'preload-plan-detail'")
expect(source).toContain('v-if="!isPreload && (detailLoading || detailError || detail)"')
expect(source).toContain('class="confirmed-inline-detail surface-panel"')
expect(source).toContain("name: 'loading-list-detail'")
expect(source).not.toContain('confirmed-inline-detail')
expect(preloadDetailSource).toContain('返回列表')
expect(preloadDetailSource).toContain('router.back()')
expect(confirmedDetailSource).toContain('返回列表')
expect(confirmedDetailSource).toContain('router.back()')
expect(routesSource).toContain("path: 'loading-lists/:planId'")
expect(routesSource).toContain("name: 'loading-list-detail'")
})
it('keeps the real transport edit contract in a 620px centered modal', () => {
@@ -88,8 +94,9 @@ describe('LoadingListsView', () => {
expect(source).toContain('useRoute()')
expect(source).toContain('route.query.planId')
expect(source).toContain('route.query.warehouseId')
expect(source).toContain("const expectedStatuses = isPreload.value ? ['EDITING', 'LOADING'] : ['COMPLETED']")
expect(source).toContain('MODE_STATUS_MISMATCH')
expect(source).toContain("router.replace({ name: 'loading-list-detail'")
expect(confirmedDetailSource).toContain("result.summary.status !== 'COMPLETED'")
expect(confirmedDetailSource).toContain('MODE_STATUS_MISMATCH')
})
it('passes translated status text directly to the badge', () => {
@@ -125,12 +132,14 @@ describe('LoadingListsView', () => {
})
it('uploads declaration documents from a file picker and freezes them after completion', () => {
expect(source).toContain('<el-upload :auto-upload="false" :limit="1"')
expect(source).toContain('@confirm="uploadCustomsDocument"')
expect(source).toContain('uploadLoadingDeclaration(selectedPlanId.value, selectedWarehouseId.value, customsFile.value')
expect(confirmedDetailSource).toContain('<el-upload :auto-upload="false" :limit="1"')
expect(confirmedDetailSource).toContain('@confirm="uploadCustomsDocument"')
expect(confirmedDetailSource).toContain('uploadLoadingDeclaration(')
expect(confirmedDetailSource).toContain('getLoadingDeclaration(planId.value, warehouseId.value)')
expect(confirmedDetailSource).toContain("details.code === 'A0404'")
expect(detailSource).toContain("canManageCustoms && !detail.customsDocument?.completedAt")
expect(source).not.toContain('文件 ID')
expect(source).not.toContain('fileId')
expect(source).not.toContain('上传入口待')
expect(confirmedDetailSource).not.toContain('文件 ID')
expect(confirmedDetailSource).not.toContain('fileId')
expect(confirmedDetailSource).not.toContain('上传入口待')
})
})