import { act, assertEquals, cleanup, render } from "./setup.ts"; import Loading from "../../islands/Loading.tsx"; Deno.test({ name: "Loading - initially hidden", fn() { const { container } = render(); const overlay = container.firstElementChild!; assertEquals(overlay.className.includes("hidden"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Loading - registers globalThis.$loading", fn() { render(); assertEquals(typeof globalThis.$loading, "object"); assertEquals(typeof globalThis.$loading!.show, "function"); assertEquals(typeof globalThis.$loading!.hide, "function"); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Loading - show() makes visible", fn() { const { container } = render(); act(() => { globalThis.$loading!.show(); }); const overlay = container.firstElementChild!; assertEquals(overlay.className.includes("hidden"), false); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Loading - hide() hides again", fn() { const { container } = render(); act(() => { globalThis.$loading!.show(); }); act(() => { globalThis.$loading!.hide(); }); const overlay = container.firstElementChild!; assertEquals(overlay.className.includes("hidden"), true); cleanup(); }, sanitizeResources: false, sanitizeOps: false, }); Deno.test({ name: "Loading - cleans up globalThis.$loading on unmount", fn() { render(); assertEquals(globalThis.$loading !== undefined, true); cleanup(); assertEquals(globalThis.$loading, undefined); }, sanitizeResources: false, sanitizeOps: false, });