github.com/tilt-dev/tilt@v0.36.0/web/src/FatalErrorModal.test.tsx (about) 1 import React from "react" 2 import ReactDOM from "react-dom" 3 import ReactModal from "react-modal" 4 import FatalErrorModal from "./FatalErrorModal" 5 import { ShowFatalErrorModal } from "./types" 6 import { render } from "@testing-library/react" 7 8 const fakeHandleCloseModal = () => {} 9 let originalCreatePortal = ReactDOM.createPortal 10 11 describe("FatalErrorModal", () => { 12 beforeEach(() => { 13 // Note: `body` is used as the app element _only_ in a test env 14 // since the app root element isn't available; in prod, it should 15 // be set as the app root so that accessibility features are set correctly 16 ReactModal.setAppElement(document.body) 17 let mock: any = (node: any) => node 18 ReactDOM.createPortal = mock 19 }) 20 21 afterEach(() => { 22 ReactDOM.createPortal = originalCreatePortal 23 }) 24 25 it("doesn't render if there's no fatal error and the modal hasn't been closed", () => { 26 render( 27 <FatalErrorModal 28 error={null} 29 showFatalErrorModal={ShowFatalErrorModal.Default} 30 handleClose={fakeHandleCloseModal} 31 /> 32 ) 33 }) 34 35 it("does render if there is a fatal error and the modal hasn't been closed", () => { 36 render( 37 <FatalErrorModal 38 error={"i'm an error"} 39 showFatalErrorModal={ShowFatalErrorModal.Default} 40 handleClose={fakeHandleCloseModal} 41 /> 42 ) 43 }) 44 45 it("doesn't render if there is a fatal error and the modal has been closed", () => { 46 render( 47 <FatalErrorModal 48 error={"i'm an error"} 49 showFatalErrorModal={ShowFatalErrorModal.Hide} 50 handleClose={fakeHandleCloseModal} 51 /> 52 ) 53 }) 54 })