diff --git a/src/components/Header.test.tsx b/src/components/Header.test.tsx index aec69a950..81ad82dba 100644 --- a/src/components/Header.test.tsx +++ b/src/components/Header.test.tsx @@ -1,4 +1,5 @@ import { fireEvent, render, screen } from '@testing-library/react'; +import { AppContext } from '../context/App'; import { Header } from './Header'; const mockNavigate = jest.fn(); @@ -8,6 +9,12 @@ jest.mock('react-router-dom', () => ({ })); describe('components/Header.tsx', () => { + const fetchNotifications = jest.fn(); + + afterEach(() => { + jest.resetAllMocks(); + }); + it('should render itself & its children', () => { const tree = render(
Test Header
); @@ -18,9 +25,26 @@ describe('components/Header.tsx', () => { render(
Test Header
); fireEvent.click(screen.getByLabelText('Go Back')); - expect(mockNavigate).toHaveBeenNthCalledWith(1, -1); expect(mockNavigate).toHaveBeenCalledTimes(1); expect(mockNavigate).toHaveBeenCalledWith(-1); }); + + it('should navigate back and fetch notifications', () => { + render( + +
Test Header
+
, + ); + + fireEvent.click(screen.getByLabelText('Go Back')); + + expect(mockNavigate).toHaveBeenCalledTimes(1); + expect(mockNavigate).toHaveBeenCalledWith(-1); + expect(fetchNotifications).toHaveBeenCalledTimes(1); + }); }); diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 23f7e3651..98698d861 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,21 +1,34 @@ import { ArrowLeftIcon } from '@primer/octicons-react'; -import type { FC, ReactNode } from 'react'; +import { type FC, type ReactNode, useContext } from 'react'; import { useNavigate } from 'react-router-dom'; +import { AppContext } from '../context/App'; import { Size } from '../types'; interface IHeader { children: ReactNode; + fetchOnBack?: boolean; } -export const Header: FC = ({ children }: IHeader) => { +export const Header: FC = ({ + children, + fetchOnBack = false, +}: IHeader) => { const navigate = useNavigate(); + + const { fetchNotifications } = useContext(AppContext); + return (