1- import { render , screen } from '@testing-library/react'
1+ import { cleanup , render , screen } from '@testing-library/react'
22import { QueryClient , QueryClientProvider } from '@tanstack/react-query'
33import { AcrylicOrangeTheme , CssBaseline , OxygenUIThemeProvider } from '@wso2/oxygen-ui'
44import { I18nextProvider } from 'react-i18next'
@@ -9,7 +9,33 @@ import i18n from '../i18n/i18n'
99
1010const 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+
1237afterEach ( ( ) => {
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