Files
0pt/tests/components/order-notes-ssr.test.ts
T

32 lines
1.3 KiB
TypeScript

/**
* SSR-render-proof för den nya admin-ytan /admin/notes (kernel-konsumenten).
* Samma mönster som import-wizard-ssr.test.ts: react-dom/server i Node.
* PortalShell -> usePathname (next/navigation) mockas; sonner toast mockas.
*/
import { describe, it, expect, vi } from "vitest";
vi.mock("next/navigation", () => ({
usePathname: () => "/admin/notes",
useRouter: () => ({ push: vi.fn(), replace: vi.fn() }),
}));
vi.mock("sonner", () => ({ toast: { success: vi.fn(), warning: vi.fn(), error: vi.fn() } }));
vi.mock("@/components/locale-provider", () => ({
LocaleProvider: ({ children }: { children: React.ReactNode }) => children,
useT: () => (x: { en: string; sv: string }) => x.en,
useLocale: () => "en",
}));
import { createElement } from "react";
import { renderToString } from "react-dom/server";
import OrderNotesPage from "@/app/admin/notes/page";
describe("/admin/notes SSR (kernel-konsument-yta)", () => {
it("renderar rubrik, offline-växeln och laddningstillstånd utan krasch (SSR = första paint före useEffect)", () => {
const html = renderToString(createElement(OrderNotesPage));
expect(html).toContain("Orderanteckningar");
expect(html).toContain("Offline-läge");
expect(html).toContain('role="status"'); // loading-skeleton = korrekt SSR-att-få-state
expect(html.length).toBeGreaterThan(500);
});
});