import React from "react"; import { fireEvent, render, screen, waitFor, waitForElementToBeRemoved } from "@testing-library/react"; import Tooltip from "../Tooltip"; import Button from "../../Button/Button"; describe("Tooltip tests", () => { it("Should trigger onTooltipShow", async () => { const onTooltipShow = jest.fn(); const { getByText } = render(
hello
); fireEvent.mouseOver(getByText("hello")); await waitFor(() => screen.getByText("content")); expect(onTooltipShow).toHaveBeenCalledTimes(1); }); it("Shouldn't trigger onTooltipShow on keyboard focus", async () => { const onTooltipShow = jest.fn(); const testId = "tooltip-button"; const { getByTestId } = render( ); fireEvent.focus(getByTestId(testId)); expect(onTooltipShow).toHaveBeenCalledTimes(0); }); it("Should trigger onTooltipShow on keyboard focus when addKeyboardHideShowTriggersByDefault is true", async () => { const onTooltipShow = jest.fn(); const testId = "tooltip-button"; const { getByTestId } = render( ); fireEvent.focus(getByTestId(testId)); await waitFor(() => screen.getByText("content")); expect(onTooltipShow).toHaveBeenCalledTimes(1); }); it("Should trigger onTooltipHide", async () => { const onTooltipHide = jest.fn(); const { getByText } = render(
hello
); fireEvent.mouseOver(getByText("hello")); await waitFor(() => screen.getByText("content")); fireEvent.mouseLeave(getByText("hello")); await waitForElementToBeRemoved(() => screen.getByText("content")); expect(onTooltipHide).toHaveBeenCalledTimes(1); }); it("Shouldn't trigger onTooltipHide on keyboard blur", async () => { const onTooltipHide = jest.fn(); const testId = "tooltip-button"; const { getByTestId } = render( ); fireEvent.mouseOver(getByTestId(testId)); await waitFor(() => screen.getByText("content")); fireEvent.blur(getByTestId(testId)); expect(onTooltipHide).toHaveBeenCalledTimes(0); }); it("Should trigger onTooltipHide on keyboard blur when addKeyboardHideShowTriggersByDefault is true", async () => { const onTooltipHide = jest.fn(); const testId = "tooltip-button"; const { getByTestId } = render( ); fireEvent.mouseOver(getByTestId(testId)); await waitFor(() => screen.getByText("content")); fireEvent.blur(getByTestId(testId)); await waitForElementToBeRemoved(() => screen.getByText("content")); expect(onTooltipHide).toHaveBeenCalledTimes(1); }); });