import { afterEach, describe, expect, it, vi } from "vitest"; import { cleanup, render } from "@testing-library/react"; const toast = vi.hoisted(() => ({ warning: vi.fn() })); vi.mock("sonner", () => ({ toast })); vi.mock("react-i18next", () => ({ useTranslation: () => ({ t: (key: string) => key }), })); const look = vi.hoisted(() => ({ safeMode: false })); vi.mock("@/look/look-store", () => ({ useLookState: () => ({ loaded: true, response: { safeMode: look.safeMode }, }), })); const { SafeModeNotice } = await import("@/shell/SafeModeNotice"); afterEach(() => { cleanup(); toast.warning.mockReset(); }); describe("SafeModeNotice", () => { it("shows nothing when safe mode is off", () => { look.safeMode = false; render(); expect(toast.warning).not.toHaveBeenCalled(); }); it("shows a lasting warning when the server runs in safe mode", () => { look.safeMode = true; render(); expect(toast.warning).toHaveBeenCalledWith( "safeMode.title", expect.objectContaining({ id: "safe-mode", description: "safeMode.description", duration: Infinity, }), ); }); });