// @vitest-environment jsdom // // A card's numbers follow a language switch. The formatters read the UI language, but the // React Compiler memoizes a call on its ARGUMENTS — `formatRuntime(card.duration_seconds)` stayed // "2 hr 4 min" after switching to Hungarian while the hero beside it said "2 ó 16 p". Real catalog. import { describe, it, expect, afterEach, vi } from "vitest"; import { render, screen, cleanup, act } from "@testing-library/react"; import { setLanguage } from "../i18n"; import { PlexPosterCard } from "./plexCards"; import type { PlexCard } from "../lib/api"; afterEach(() => { cleanup(); setLanguage("en"); }); const movie: PlexCard = { id: "m1", type: "movie", title: "Heat", thumb: "/api/plex/image/m1", duration_seconds: 2 * 3600 + 4 * 60, rating: 8.3, }; describe("a card after a language switch", () => { it("says its runtime and rating in the new language", () => { setLanguage("en"); render(); expect(screen.getByText("2 hr 4 min")).toBeTruthy(); act(() => setLanguage("hu")); expect(screen.getByText("2 ó 4 p")).toBeTruthy(); expect(screen.getByText("8,3")).toBeTruthy(); }); });