import { cleanup, render, screen } from "@testing-library/react"; import assert from "node:assert"; import { afterEach, beforeEach, describe, test, } from "node:test"; import { constants } from "../../constants"; import { Localisation } from "../../plugins/localisation"; import { Locale } from "./index"; describe("Locale", () => { let prevLocalisationInstance: typeof Localisation.instance; beforeEach(() => { prevLocalisationInstance = Localisation.instance; Localisation.instance = {} as unknown as Localisation; }); afterEach(() => { cleanup(); Localisation.instance = prevLocalisationInstance; }); test("renders fallback children in SSR mode and keeps locale config attr", () => { render( Fallback text ); const node = document.querySelector("ins[data-js-locale]"); assert.notStrictEqual(node, null); assert.strictEqual(node?.getAttribute("data-js-locale")?.includes("forms.invalidInput"), true); assert.notStrictEqual(screen.queryByText("Fallback text"), null); assert.strictEqual(node?.classList.contains(constants.stateClasses.translationLoading), true); }); test("renders static container in SSG mode", () => { render( SSG locale content ); const staticNode = document.querySelector("ins.locale[data-js-locale]"); assert.notStrictEqual(staticNode, null); assert.strictEqual(staticNode?.getAttribute("data-js-locale")?.includes("forms.invalidInput"), true); assert.notStrictEqual(screen.queryByText("SSG locale content"), null); }); });