github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/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 renderer from "react-test-renderer" 5 import FatalErrorModal from "./FatalErrorModal" 6 import { ShowFatalErrorModal } from "./types" 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 const tree = renderer 27 .create( 28 <FatalErrorModal 29 error={null} 30 showFatalErrorModal={ShowFatalErrorModal.Default} 31 handleClose={fakeHandleCloseModal} 32 /> 33 ) 34 .toJSON() 35 36 expect(tree).toMatchSnapshot() 37 }) 38 39 it("does render if there is a fatal error and the modal hasn't been closed", () => { 40 const tree = renderer 41 .create( 42 <FatalErrorModal 43 error={"i'm an error"} 44 showFatalErrorModal={ShowFatalErrorModal.Default} 45 handleClose={fakeHandleCloseModal} 46 /> 47 ) 48 .toJSON() 49 50 expect(tree).toMatchSnapshot() 51 }) 52 53 it("doesn't render if there is a fatal error and the modal has been closed", () => { 54 const tree = renderer 55 .create( 56 <FatalErrorModal 57 error={"i'm an error"} 58 showFatalErrorModal={ShowFatalErrorModal.Hide} 59 handleClose={fakeHandleCloseModal} 60 /> 61 ) 62 .toJSON() 63 64 expect(tree).toMatchSnapshot() 65 }) 66 })