Files
jobtrackingapp/job-tracker-ui/src/not-found-page.test.tsx
T

21 lines
1.3 KiB
TypeScript

import React from 'react';
import '@testing-library/jest-dom';
import { fireEvent, render, screen } from '@testing-library/react';
import { MemoryRouter, Route, Routes, useLocation } from 'react-router-dom';
import NotFoundPage from './views/NotFoundPage';
import { I18nProvider } from './i18n/I18nProvider';
afterEach(() => localStorage.removeItem('uiLanguage'));
function Previous() { const location = useLocation(); return <div>{location.pathname + location.search}</div>; }
test.each([['en', 'Page not found', 'Go back'], ['nb', 'Siden ble ikke funnet', 'Gå tilbake']])('unknown %s page has contextual headings and preserves Back', (language, title, back) => {
localStorage.setItem('uiLanguage', language);
render(<I18nProvider><MemoryRouter initialEntries={['/previous?keep=context', '/unknown']} initialIndex={1}>
<Routes><Route path="/previous" element={<Previous />} /><Route path="*" element={<NotFoundPage />} /></Routes>
</MemoryRouter></I18nProvider>);
expect(screen.getByRole('heading', { name: title, level: 2 })).toBeInTheDocument();
expect(screen.queryByRole('heading', { name: '404' })).not.toBeInTheDocument();
fireEvent.click(screen.getByRole('button', { name: back }));
expect(screen.getByText('/previous?keep=context')).toBeInTheDocument();
});