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