import React from "react"; import "@testing-library/jest-dom"; import { fireEvent, render, screen, waitFor } from "@testing-library/react"; import { api } from "./api"; import { I18nProvider, useI18n } from "./i18n/I18nProvider"; function Probe() { const { language, setLanguage, hydrateLanguage, t } = useI18n(); return (
{language} {t("settings")}
); } beforeEach(() => { jest.clearAllMocks(); window.localStorage.clear(); }); test("migrates the legacy Norwegian code and persists Bokmål using nb-NO", async () => { window.localStorage.setItem("uiLanguage", "no"); render(); expect(screen.getByLabelText("language")).toHaveTextContent("nb"); expect(screen.getByLabelText("settings-label")).toHaveTextContent("Innstillinger"); expect(document.documentElement.lang).toBe("nb-NO"); fireEvent.click(screen.getByRole("button", { name: "English" })); expect(screen.getByLabelText("settings-label")).toHaveTextContent("Settings"); await waitFor(() => expect(api.put).toHaveBeenCalledWith("/auth/preferences/language", { language: "en" })); }); test("hydrates an authenticated server preference without writing it back", () => { render(); fireEvent.click(screen.getByRole("button", { name: /Restore server preference/i })); expect(screen.getByLabelText("language")).toHaveTextContent("nb"); expect(window.localStorage.getItem("uiLanguage")).toBe("nb"); expect(api.put).not.toHaveBeenCalled(); });