@@ -2,15 +2,36 @@ import { QueryClient, QueryClientProvider } from 'react-query';
22import { MemoryRouter } from 'react-router-dom' ;
33
44import { render , screen , waitFor } from '@folio/jest-config-stripes/testing-library/react' ;
5- import { useOkapiKyQuery } from '@folio/stripes-leipzig-components' ;
65
76import CredentialsSettings from './CredentialsSettings' ;
87
98jest . mock ( './CredentialsSettingsForm' , ( ) => ( ) => < div > CredentialsSettingsForm</ div > ) ;
109
11- jest . mock ( '@folio/stripes-leipzig- components' , ( ) => ( {
12- ...jest . requireActual ( '@folio/stripes-leipzig- components' ) ,
10+ jest . mock ( '@folio/stripes/ components' , ( ) => ( {
11+ ...jest . requireActual ( '@folio/stripes/ components' ) ,
1312 useOkapiKyQuery : jest . fn ( ) ,
13+ Loading : ( ) => < div > Loading</ div > ,
14+ } ) ) ;
15+
16+ const mockUseQuery = jest . fn ( ) ;
17+ const mockKyGet = jest . fn ( ) ;
18+
19+ jest . mock ( 'react-query' , ( ) => {
20+ const actual = jest . requireActual ( 'react-query' ) ;
21+ return {
22+ ...actual ,
23+ useQuery : ( ...args ) => mockUseQuery ( ...args ) ,
24+ useMutation : ( ) => ( {
25+ mutate : jest . fn ( ) ,
26+ } ) ,
27+ } ;
28+ } ) ;
29+
30+ jest . mock ( '@folio/stripes/core' , ( ) => ( {
31+ useOkapiKy : ( ) => ( {
32+ get : mockKyGet ,
33+ put : jest . fn ( ) ,
34+ } ) ,
1435} ) ) ;
1536
1637const renderComponent = ( ) => {
@@ -26,26 +47,27 @@ const renderComponent = () => {
2647
2748describe ( 'CredentialsSettings' , ( ) => {
2849 beforeEach ( ( ) => {
29- useOkapiKyQuery . mockReset ( ) ;
50+ mockUseQuery . mockReset ( ) ;
51+ mockKyGet . mockReset ( ) ;
3052 } ) ;
3153
3254 test ( 'renders loading state' , ( ) => {
33- useOkapiKyQuery . mockReturnValue ( {
55+ mockUseQuery . mockReturnValue ( {
3456 data : undefined ,
35- isError : false ,
57+ error : null ,
3658 isLoading : true ,
3759 refetch : jest . fn ( ) ,
3860 } ) ;
3961
4062 renderComponent ( ) ;
4163
42- expect ( document . querySelector ( '.spinner ') ) . toBeInTheDocument ( ) ;
64+ expect ( screen . getByText ( 'Loading ') ) . toBeInTheDocument ( ) ;
4365 } ) ;
4466
4567 test ( 'renders error state' , ( ) => {
46- useOkapiKyQuery . mockReturnValue ( {
68+ mockUseQuery . mockReturnValue ( {
4769 data : undefined ,
48- isError : true ,
70+ error : { message : 'Network error' } ,
4971 isLoading : false ,
5072 refetch : jest . fn ( ) ,
5173 } ) ;
@@ -56,9 +78,9 @@ describe('CredentialsSettings', () => {
5678 } ) ;
5779
5880 test ( 'renders form when credentials are defined' , async ( ) => {
59- useOkapiKyQuery . mockReturnValue ( {
81+ mockUseQuery . mockReturnValue ( {
6082 data : { } ,
61- isError : false ,
83+ error : null ,
6284 isLoading : false ,
6385 refetch : jest . fn ( ) ,
6486 } ) ;
@@ -70,12 +92,14 @@ describe('CredentialsSettings', () => {
7092 } ) ;
7193 } ) ;
7294
73- test ( 'renders form when ky.get().json() returns null' , async ( ) => {
74- useOkapiKyQuery . mockReturnValue ( {
75- data : null ,
76- isError : false ,
77- isLoading : false ,
78- refetch : jest . fn ( ) ,
95+ test ( 'renders form when GET returns null' , async ( ) => {
96+ // Use actual useQuery implementation
97+ const { useQuery : actualUseQuery } = jest . requireActual ( 'react-query' ) ;
98+ mockUseQuery . mockImplementation ( actualUseQuery ) ;
99+
100+ // Mock ky.get().json() to return null
101+ mockKyGet . mockReturnValue ( {
102+ json : jest . fn ( ) . mockResolvedValue ( null ) ,
79103 } ) ;
80104
81105 renderComponent ( ) ;
0 commit comments