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(); expect(screen.getByRole("alert")).toHaveTextContent(message); expect(I18nProvider).not.toHaveBeenCalled(); expect(api.get).not.toHaveBeenCalled(); } finally { document.documentElement.lang = previousLanguage; } });