@@ -21,20 +21,31 @@ import { EMPTY_MOCKS, MOCKS, USER_PLEDGES_ERROR } from './PledgesMocks';
2121import type { ApolloLink } from '@apollo/client' ;
2222import Pledges from './Pledges' ;
2323import useLocalStorage from 'utils/useLocalstorage' ;
24+ import { vi , expect , describe , it } from 'vitest' ;
2425
25- jest . mock ( 'react-toastify' , ( ) => ( {
26+ vi . mock ( 'react-router-dom' , async ( ) => {
27+ const actual = await vi . importActual ( 'react-router-dom' ) ;
28+ return {
29+ ...actual ,
30+ useParams : ( ) => ( { orgId : 'orgId' } ) ,
31+ } ;
32+ } ) ;
33+
34+ vi . mock ( 'react-toastify' , ( ) => ( {
2635 toast : {
27- success : jest . fn ( ) ,
28- error : jest . fn ( ) ,
36+ success : vi . fn ( ) ,
37+ error : vi . fn ( ) ,
2938 } ,
3039} ) ) ;
31- jest . mock ( '@mui/x-date-pickers/DateTimePicker' , ( ) => {
40+ vi . mock ( '@mui/x-date-pickers/DateTimePicker' , async ( ) => {
41+ const actualModule = await vi . importActual (
42+ '@mui/x-date-pickers/DesktopDateTimePicker' ,
43+ ) ;
3244 return {
33- DateTimePicker : jest . requireActual (
34- '@mui/x-date-pickers/DesktopDateTimePicker' ,
35- ) . DesktopDateTimePicker ,
45+ DateTimePicker : actualModule . DesktopDateTimePicker ,
3646 } ;
3747} ) ;
48+
3849const { setItem } = useLocalStorage ( ) ;
3950
4051const link1 = new StaticMockLink ( MOCKS ) ;
@@ -71,15 +82,8 @@ describe('Testing User Pledge Screen', () => {
7182 setItem ( 'userId' , 'userId' ) ;
7283 } ) ;
7384
74- beforeAll ( ( ) => {
75- jest . mock ( 'react-router-dom' , ( ) => ( {
76- ...jest . requireActual ( 'react-router-dom' ) ,
77- useParams : ( ) => ( { orgId : 'orgId' } ) ,
78- } ) ) ;
79- } ) ;
80-
8185 afterAll ( ( ) => {
82- jest . clearAllMocks ( ) ;
86+ vi . clearAllMocks ( ) ;
8387 } ) ;
8488
8589 afterEach ( ( ) => {
@@ -95,32 +99,35 @@ describe('Testing User Pledge Screen', () => {
9599 } ) ;
96100 } ) ;
97101
102+ // This test works:
98103 it ( 'should redirect to fallback URL if userId is null in LocalStorage' , async ( ) => {
99104 setItem ( 'userId' , null ) ;
105+
100106 renderMyPledges ( link1 ) ;
101107 await waitFor ( ( ) => {
102108 expect ( screen . getByTestId ( 'paramsError' ) ) . toBeInTheDocument ( ) ;
103109 } ) ;
104110 } ) ;
105111
112+ // So let's structure our failing test similarly:
106113 it ( 'should redirect to fallback URL if URL params are undefined' , async ( ) => {
107114 render (
108115 < MockedProvider addTypename = { false } link = { link1 } >
109- < MemoryRouter initialEntries = { [ '/user/pledges/ ' ] } >
116+ < MemoryRouter initialEntries = { [ '/' ] } >
110117 < Provider store = { store } >
111- < I18nextProvider i18n = { i18nForTest } >
112- < Routes >
113- < Route path = "/user/pledges/" element = { < Pledges /> } />
114- < Route
115- path = "/"
116- element = { < div data-testid = "paramsError" > </ div > }
117- />
118- </ Routes >
119- </ I18nextProvider >
118+ < LocalizationProvider dateAdapter = { AdapterDayjs } >
119+ < I18nextProvider i18n = { i18nForTest } >
120+ < Routes >
121+ < Route path = "/user/pledges/:orgId" element = { < Pledges /> } />
122+ < Route path = "/" element = { < div data-testid = "paramsError" /> } />
123+ </ Routes >
124+ </ I18nextProvider >
125+ </ LocalizationProvider >
120126 </ Provider >
121127 </ MemoryRouter >
122128 </ MockedProvider > ,
123129 ) ;
130+
124131 await waitFor ( ( ) => {
125132 expect ( screen . getByTestId ( 'paramsError' ) ) . toBeInTheDocument ( ) ;
126133 } ) ;
0 commit comments