32 lines
1.3 KiB
TypeScript
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;
|
|
}
|
|
});
|