import React from "react"; import { render, screen } from "@testing-library/react"; import FP from "../components/fp"; import jest from "jest-mock"; import { userEvent } from "storybook/test"; describe("FP component", () => { it("renders a div by default", () => { const { container } = render(); expect(container.firstChild).toMatchSnapshot(); }); it("renders a span when specified", () => { const { container } = render(Span); const span = container.querySelector("span"); expect(span).toBeInTheDocument(); }); it("renders children", () => { const { container } = render(Hello, world!); expect(container.firstChild).toHaveTextContent("Hello, world!"); }); it("applies styles", () => { const style = { backgroundColor: "red;" }; const { container } = render(Hello, world!); expect(container.firstChild).toHaveStyle(style); }); it("does not render styles when renderStyles is false", () => { const { container } = render( Hello, world! ); expect(container.firstChild).not.toHaveStyle("background-color: red;"); }); it("passes through props", async () => { const handleClick = jest.fn(); const { container } = render( Hello, world! ); expect(container.firstChild).toBeInTheDocument(); await userEvent.click(screen.getByRole("button")); expect(handleClick).toHaveBeenCalled(); }); it("applies ref", () => { const ref = React.createRef(); render(Hello, world!); expect(ref.current).toBeTruthy(); }); });