This commit is contained in:
2026-08-07 20:07:37 +08:00
parent 28d0b81c5a
commit 99413ee155
27 changed files with 1065 additions and 595 deletions
@@ -23,11 +23,23 @@ import QueryToolbar from '@/shared/components/QueryToolbar.vue'
import { showExportTaskCreatedDialog } from '@/shared/components/exportTaskCreatedDialog'
import CustomersView from './CustomersView.vue'
const { routerPush, routerReplace } = vi.hoisted(() => ({ routerPush: vi.fn(), routerReplace: vi.fn() }))
const { routerPush, routerReplace, routeControl } = vi.hoisted(() => ({
routerPush: vi.fn(),
routerReplace: vi.fn(),
routeControl: { setEditId: (_editId: string) => {} },
}))
vi.mock('vue-router', async (importOriginal) => ({
...await importOriginal<typeof import('vue-router')>(),
useRoute: () => ({ query: {} }),
...await (async () => {
const { reactive } = await import('vue')
const route = reactive<{ query: { edit?: string } }>({ query: {} })
routeControl.setEditId = (editId: string) => {
if (editId) route.query.edit = editId
else delete route.query.edit
}
return { useRoute: () => route }
})(),
useRouter: () => ({ push: routerPush, replace: routerReplace }),
}))
@@ -89,6 +101,7 @@ describe('CustomersView', () => {
beforeEach(() => {
vi.clearAllMocks()
routeControl.setEditId('')
vi.stubGlobal('ResizeObserver', ResizeObserverStub)
Object.defineProperty(URL, 'createObjectURL', { configurable: true, value: vi.fn(() => 'blob:qualification-preview') })
Object.defineProperty(URL, 'revokeObjectURL', { configurable: true, value: vi.fn() })
@@ -208,6 +221,18 @@ describe('CustomersView', () => {
expect(getPlatformTenant).not.toHaveBeenCalled()
})
it('opens the requested editor when a cached list receives an edit query', async () => {
mount(CustomersView, { attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
routeControl.setEditId(String(fullTenant.id))
await flushPromises()
expect(getPlatformTenant).toHaveBeenCalledWith(fullTenant.id)
expect(document.querySelector<HTMLInputElement>('input[placeholder="请输入手机号或固定电话"]')?.value).toBe(fullTenant.contactPhone)
expect(routerReplace).toHaveBeenCalledWith({ name: 'customers' })
})
it('saves both required files and the credit code through one package action', async () => {
vi.mocked(listTenantQualifications).mockResolvedValue([{
id: 'qualification-legal', tenantId: fullTenant.id, qualificationType: 'LEGAL_PERSON_ID',