11import  {  fireEvent ,  render ,  screen  }  from  '@testing-library/react' ; 
2+ import  {  AppContext  }  from  '../context/App' ; 
23import  {  Header  }  from  './Header' ; 
34
45const  mockNavigate  =  jest . fn ( ) ; 
@@ -8,6 +9,12 @@ jest.mock('react-router-dom', () => ({
89} ) ) ; 
910
1011describe ( 'components/Header.tsx' ,  ( )  =>  { 
12+   const  fetchNotifications  =  jest . fn ( ) ; 
13+ 
14+   afterEach ( ( )  =>  { 
15+     jest . resetAllMocks ( ) ; 
16+   } ) ; 
17+ 
1118  it ( 'should render itself & its children' ,  ( )  =>  { 
1219    const  tree  =  render ( < Header > Test Header</ Header > ) ; 
1320
@@ -18,9 +25,26 @@ describe('components/Header.tsx', () => {
1825    render ( < Header > Test Header</ Header > ) ; 
1926
2027    fireEvent . click ( screen . getByLabelText ( 'Go Back' ) ) ; 
21-     expect ( mockNavigate ) . toHaveBeenNthCalledWith ( 1 ,  - 1 ) ; 
2228
2329    expect ( mockNavigate ) . toHaveBeenCalledTimes ( 1 ) ; 
2430    expect ( mockNavigate ) . toHaveBeenCalledWith ( - 1 ) ; 
2531  } ) ; 
32+ 
33+   it ( 'should navigate back and fetch notifications' ,  ( )  =>  { 
34+     render ( 
35+       < AppContext . Provider 
36+         value = { { 
37+           fetchNotifications, 
38+         } } 
39+       > 
40+         < Header  fetchOnBack = { true } > Test Header</ Header > 
41+       </ AppContext . Provider > , 
42+     ) ; 
43+ 
44+     fireEvent . click ( screen . getByLabelText ( 'Go Back' ) ) ; 
45+ 
46+     expect ( mockNavigate ) . toHaveBeenCalledTimes ( 1 ) ; 
47+     expect ( mockNavigate ) . toHaveBeenCalledWith ( - 1 ) ; 
48+     expect ( fetchNotifications ) . toHaveBeenCalledTimes ( 1 ) ; 
49+   } ) ; 
2650} ) ; 
0 commit comments