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  })