Files
jobtrackingapp/job-tracker-ui/src/session-boundary-message.test.tsx
T

32 lines
1.3 KiB
TypeScript

import React from "react";
import { render, screen } from "@testing-library/react";
import "@testing-library/jest-dom";
import App from "./App";
import { I18nProvider } from "./i18n/I18nProvider";
import { api } from "./api";
jest.mock("./sessionBoundary", () => ({
isSessionInvalidated: () => true,
SESSION_INVALIDATED_EVENT: "session-invalidated",
}));
jest.mock("./i18n/I18nProvider", () => ({
...jest.requireActual("./i18n/I18nProvider"),
I18nProvider: jest.fn(() => { throw new Error("Invalidated sessions must not mount providers"); }),
}));
test.each([
["en", "Your session changed. Private data and unsaved edits were cleared from this page. Sign in again to continue."],
["nb-NO", "Økten din ble endret. Private data og ulagrede endringer ble fjernet fra denne siden. Logg inn igjen for å fortsette."],
])("invalidated session shows %s feedback outside the private provider tree", (language, message) => {
const previousLanguage = document.documentElement.lang;
document.documentElement.lang = language;
try {
render(<App />);
expect(screen.getByRole("alert")).toHaveTextContent(message);
expect(I18nProvider).not.toHaveBeenCalled();
expect(api.get).not.toHaveBeenCalled();
} finally {
document.documentElement.lang = previousLanguage;
}
});