feat(frontend): improve provider detail drawer and pool actions

This commit is contained in:
elky
2026-07-25 11:16:59 +08:00
parent 387134ca87
commit 764e9fd131
10 changed files with 158 additions and 31 deletions
@@ -8,7 +8,7 @@ vi.mock('@/api/client', () => ({
},
}))
import { getProviderMappingPreview, getProvidersSummary } from '@/api/endpoints/providers'
import { getProvider, getProviderMappingPreview, getProvidersSummary } from '@/api/endpoints/providers'
const provider = {
id: 'provider-1',
@@ -45,6 +45,30 @@ describe('getProvidersSummary', () => {
})
})
describe('getProvider', () => {
beforeEach(() => {
getMock.mockReset()
})
it('deduplicates concurrent detail requests without caching the settled result', async () => {
let resolveRequest: ((value: { data: typeof provider }) => void) | undefined
getMock.mockImplementation(() => new Promise((resolve) => {
resolveRequest = resolve
}))
const firstRequest = getProvider('provider-1')
const secondRequest = getProvider('provider-1')
expect(getMock).toHaveBeenCalledTimes(1)
resolveRequest?.({ data: provider })
await expect(Promise.all([firstRequest, secondRequest])).resolves.toHaveLength(2)
getMock.mockResolvedValue({ data: provider })
await getProvider('provider-1')
expect(getMock).toHaveBeenCalledTimes(2)
})
})
describe('getProviderMappingPreview', () => {
beforeEach(() => {
getMock.mockReset()