import React from "react";
import { render } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { createSerializer } from "@emotion/jest";
import { Tooltip } from "../";
expect.addSnapshotSerializer(createSerializer());
describe("Tooltip", () => {
it("renders trigger element", () => {
const { getByText } = render(
content
);
getByText("trigger");
});
it("renders open tooltip", () => {
const { getByText } = render(
content
);
getByText("trigger");
getByText("content");
});
it("show tooltip content on mouseOver", async () => {
const { getByText, queryByText } = render(
content
);
expect(queryByText("content")).not.toBeInTheDocument();
await userEvent.hover(getByText("trigger"));
getByText("content");
});
it("removes tooltip content on mouseLeave", async () => {
const { getByText, queryByText } = render(
content
);
getByText("content");
await userEvent.unhover(getByText("trigger"));
expect(queryByText("content")).not.toBeInTheDocument();
});
it("does not show tooltip content even on hover if suppress is true", async () => {
const { queryByText, getByText } = render(
content
);
expect(queryByText("content")).not.toBeInTheDocument();
await userEvent.hover(getByText("trigger"));
expect(queryByText("content")).not.toBeInTheDocument();
});
it("calls onClose prop when closed", async () => {
const handleClose = jest.fn();
const { getByText } = render(
content
);
await userEvent.hover(getByText("trigger"));
expect(handleClose).toHaveBeenCalledTimes(0);
await userEvent.unhover(getByText("trigger"));
expect(handleClose).toHaveBeenCalledTimes(1);
});
});