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