UNPKG

monday-ui-react-core

Version:

Official monday.com UI resources for application development in React.js

67 lines (52 loc) 2.19 kB
import React from "react"; import renderer from "react-test-renderer"; import { render, fireEvent, screen } from "@testing-library/react"; import '@testing-library/jest-dom'; import ExpandCollapse from "../ExpandCollapse"; describe('ExpandCollapse', () => { it("renders correctly with empty props", () => { const tree = renderer.create(<ExpandCollapse />).toJSON(); expect(tree).toMatchSnapshot(); }); it("Should render header component", function() { render(<ExpandCollapse headerComponentRenderer={() => <h1>Some Header</h1>} />); expect(screen.getByText("Some Header")).toBeInTheDocument(); }); it("Should not render child components when closed", function() { render( <ExpandCollapse headerComponentRenderer={() => <h1>Some Header</h1>}> <h1>Child 1</h1> <span>Child 2</span> </ExpandCollapse> ); expect(screen.getByText("Some Header")).toBeInTheDocument(); expect(screen.queryByText("Child 1")).toBeNull(); expect(screen.queryByText("Child 2")).toBeNull(); }); it("Should render header and child components when defaultOpenState = true", function () { render( <ExpandCollapse defaultOpenState={true} headerComponentRenderer={() => <h1>Some Header</h1>}> <h1>Child 1</h1> <span>Child 2</span> </ExpandCollapse> ); expect(screen.getByText("Some Header")).toBeInTheDocument(); expect(screen.getByText("Child 1")).toBeInTheDocument(); expect(screen.getByText("Child 2")).toBeInTheDocument(); }); it("Should render child components after clicking component", function() { const { container } = render( <ExpandCollapse headerComponentRenderer={() => <h1>Some Header</h1>}> <h1>Child 1</h1> <span>Child 2</span> </ExpandCollapse> ); expect(screen.getByText("Some Header")).toBeInTheDocument(); expect(screen.queryByText("Child 1")).toBeNull(); expect(screen.queryByText("Child 2")).toBeNull(); fireEvent.click(container.firstChild.firstChild.firstChild); expect(screen.getByText("Child 1")).toBeInTheDocument(); expect(screen.getByText("Child 2")).toBeInTheDocument(); }); });