2025-06-23 15:09:20 +00:00
|
|
|
// TooltipWrapper.test.tsx
|
|
|
|
|
import React from "react";
|
2025-09-18 16:42:30 +00:00
|
|
|
import { render, screen, waitFor } from "@testing-library/react";
|
|
|
|
|
import { renderWithSetup } from "test/test-utils";
|
2025-06-23 15:09:20 +00:00
|
|
|
import TooltipWrapper from "./TooltipWrapper";
|
|
|
|
|
|
|
|
|
|
describe("TooltipWrapper", () => {
|
|
|
|
|
it("renders children and tooltip content", async () => {
|
2025-09-18 16:42:30 +00:00
|
|
|
const { user } = renderWithSetup(
|
2025-06-23 15:09:20 +00:00
|
|
|
<TooltipWrapper tipContent="Tooltip text">
|
|
|
|
|
<span>Hover me</span>
|
|
|
|
|
</TooltipWrapper>
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const trigger = screen.getByText("Hover me");
|
2025-09-18 16:42:30 +00:00
|
|
|
await user.hover(trigger);
|
2025-06-23 15:09:20 +00:00
|
|
|
|
2025-09-18 16:42:30 +00:00
|
|
|
await waitFor(() => {
|
|
|
|
|
expect(screen.getByText("Tooltip text")).toBeInTheDocument();
|
|
|
|
|
});
|
2025-06-23 15:09:20 +00:00
|
|
|
});
|
|
|
|
|
|
2025-09-18 16:42:30 +00:00
|
|
|
it("does not render tooltip when disableTooltip is true", async () => {
|
|
|
|
|
const { user } = renderWithSetup(
|
2025-06-23 15:09:20 +00:00
|
|
|
<TooltipWrapper tipContent="Tooltip text" disableTooltip>
|
|
|
|
|
<span>Hover me</span>
|
|
|
|
|
</TooltipWrapper>
|
|
|
|
|
);
|
2025-09-18 16:42:30 +00:00
|
|
|
const anchor = screen.getByText("Hover me");
|
|
|
|
|
expect(anchor).toBeInTheDocument();
|
|
|
|
|
|
|
|
|
|
await user.hover(anchor);
|
|
|
|
|
|
|
|
|
|
await waitFor(() => {
|
|
|
|
|
expect(screen.queryByText("Tooltip text")).toBeNull();
|
|
|
|
|
});
|
2025-06-23 15:09:20 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("applies underline class by default", () => {
|
|
|
|
|
render(
|
|
|
|
|
<TooltipWrapper tipContent="Tooltip text">
|
|
|
|
|
<span>Hover me</span>
|
|
|
|
|
</TooltipWrapper>
|
|
|
|
|
);
|
|
|
|
|
const element = screen.getByText("Hover me").parentElement;
|
|
|
|
|
expect(element).toHaveClass("component__tooltip-wrapper__element");
|
|
|
|
|
expect(element).toHaveClass("component__tooltip-wrapper__underline");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("does not apply underline class when underline is false", () => {
|
|
|
|
|
render(
|
|
|
|
|
<TooltipWrapper tipContent="Tooltip text" underline={false}>
|
|
|
|
|
<span>Hover me</span>
|
|
|
|
|
</TooltipWrapper>
|
|
|
|
|
);
|
|
|
|
|
const element = screen.getByText("Hover me").parentElement;
|
|
|
|
|
expect(element).not.toHaveClass("component__tooltip-wrapper__underline");
|
|
|
|
|
});
|
|
|
|
|
});
|