import React from "react"; import renderer from "react-test-renderer"; import { render, fireEvent, screen } from "@testing-library/react"; import ExpandCollapse from "../ExpandCollapse"; describe("ExpandCollapse", () => { it("renders correctly with empty props", () => { const tree = renderer.create().toJSON(); expect(tree).toMatchSnapshot(); }); it("Should render header component", () => { render(

Some Header

} />); expect(screen.getByText("Some Header")).toBeInTheDocument(); }); it("Should not render child components when closed", () => { render(

Some Header

}>

Child 1

Child 2
); 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", () => { render(

Some Header

}>

Child 1

Child 2
); 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", () => { const { container } = render(

Some Header

}>

Child 1

Child 2
); 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(); }); });