Skip to content

Commit 9baeb49

Browse files
Fix: Add an explicit error-path test for failed consent fetch
1 parent 405df98 commit 9baeb49

1 file changed

Lines changed: 49 additions & 20 deletions

File tree

portal/frontend/src/__tests__/ConsentRegistryPage.test.tsx

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render, screen } from '@testing-library/react'
1+
import { cleanup, render, screen } from '@testing-library/react'
22
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
33
import { AcrylicOrangeTheme, CssBaseline, OxygenUIThemeProvider } from '@wso2/oxygen-ui'
44
import { I18nextProvider } from 'react-i18next'
@@ -9,7 +9,33 @@ import i18n from '../i18n/i18n'
99

1010
const fetchMock = vi.fn()
1111

12+
function createQueryClient(): QueryClient {
13+
return new QueryClient({
14+
defaultOptions: {
15+
queries: {
16+
retry: false,
17+
},
18+
},
19+
})
20+
}
21+
22+
function renderConsentRegistryPage(queryClient: QueryClient): void {
23+
render(
24+
<OxygenUIThemeProvider theme={AcrylicOrangeTheme}>
25+
<CssBaseline />
26+
<I18nextProvider i18n={i18n}>
27+
<QueryClientProvider client={queryClient}>
28+
<MemoryRouter>
29+
<ConsentRegistryPage />
30+
</MemoryRouter>
31+
</QueryClientProvider>
32+
</I18nextProvider>
33+
</OxygenUIThemeProvider>,
34+
)
35+
}
36+
1237
afterEach(() => {
38+
cleanup()
1339
fetchMock.mockReset()
1440
vi.unstubAllGlobals()
1541
})
@@ -46,31 +72,34 @@ describe('ConsentRegistryPage', () => {
4672
}),
4773
})
4874

49-
const queryClient = new QueryClient({
50-
defaultOptions: {
51-
queries: {
52-
retry: false,
53-
},
54-
},
55-
})
75+
const queryClient = createQueryClient()
5676

57-
render(
58-
<OxygenUIThemeProvider theme={AcrylicOrangeTheme}>
59-
<CssBaseline />
60-
<I18nextProvider i18n={i18n}>
61-
<QueryClientProvider client={queryClient}>
62-
<MemoryRouter>
63-
<ConsentRegistryPage />
64-
</MemoryRouter>
65-
</QueryClientProvider>
66-
</I18nextProvider>
67-
</OxygenUIThemeProvider>,
68-
)
77+
renderConsentRegistryPage(queryClient)
6978

7079
expect(await screen.findByRole('heading', { name: 'All Consents' })).toBeInTheDocument()
7180
expect(screen.getByLabelText('Consent filters')).toBeInTheDocument()
7281
expect(await screen.findByRole('table', { name: 'Consent registry table' })).toBeInTheDocument()
7382
expect(await screen.findByText('Client: Tesco_Bank_v1')).toBeInTheDocument()
7483
expect(await screen.findByText('#CON-8291')).toBeInTheDocument()
7584
})
85+
86+
it('shows an error message when consent fetch fails', async () => {
87+
vi.stubGlobal('fetch', fetchMock)
88+
fetchMock.mockResolvedValue({
89+
ok: false,
90+
status: 500,
91+
json: async () => ({
92+
code: 'INTERNAL_SERVER_ERROR',
93+
message: 'Something went wrong.',
94+
}),
95+
})
96+
97+
const queryClient = createQueryClient()
98+
99+
renderConsentRegistryPage(queryClient)
100+
101+
expect(await screen.findByRole('heading', { name: 'All Consents' })).toBeInTheDocument()
102+
expect(await screen.findByText('Unable to load consents right now.')).toBeInTheDocument()
103+
expect(screen.queryByRole('table', { name: 'Consent registry table' })).not.toBeInTheDocument()
104+
})
76105
})

0 commit comments

Comments
 (0)