/** * @jsxImportSource solid-js * @jest-environment jsdom */ import { createRoot, resetErrorBoundaries } from "../../src"; import { ErrorBoundary } from "../src"; describe("Testing ErrorBoundary control flow", () => { let div: HTMLDivElement, disposer: () => void; const Component = () => { throw new Error("Failure"); }; let first = true; const Component2 = () => { if (first) { first = false; throw new Error("Failure"); } return "Success"; }; const Component3 = () => { throw null; }; test("Create an Error", () => { createRoot(dispose => { disposer = dispose;
; }); expect(div.innerHTML).toBe("Failed Miserably"); }); test("Create an Error with null", () => { createRoot(dispose => { disposer = dispose;
; }); expect(div.innerHTML).toBe("Failed Miserably"); }); test("Create an Error callback", () => { createRoot(dispose => { disposer = dispose;
e.message}>
; }); expect(div.innerHTML).toBe("Failure"); }); test("Create an Error callback and reset", () => { let r: () => void; createRoot(dispose => { disposer = dispose;
{ r = reset; return e.message; }} >
; }); expect(div.innerHTML).toBe("Failure"); r!(); expect(div.innerHTML).toBe("Success"); first = true; }); test("Create an Error global reset", () => { let r: () => void; createRoot(dispose => { disposer = dispose;
e.message}>
; }); expect(div.innerHTML).toBe("Failure"); resetErrorBoundaries(); expect(div.innerHTML).toBe("Success"); first = true; }); test("Create an Error in an Error Fallback", () => { createRoot(dispose => { disposer = dispose;
}>
; }); expect(div.innerHTML).toBe("Failed Miserably"); }); test("dispose", () => disposer()); });