import React from "react"; import { render } from "@testing-library/react"; import TooltipWrapper from "components/TooltipWrapper"; import { useCheckTruncatedElement } from "hooks/useCheckTruncatedElement"; import TooltipTruncatedText from "./TooltipTruncatedText"; // Mock TooltipWrapper so we can spy on the props TooltipTruncatedText forwards. // We don't care about TooltipWrapper's internal behavior here — only that // pass-through props (notably fixedPositionStrategy, disableTooltip, and // tipContent) reach it correctly. jest.mock("components/TooltipWrapper", () => ({ __esModule: true, default: jest.fn(({ children }) =>
{children}
), })); // Mock useCheckTruncatedElement so we can control isTruncated in tests. // In jsdom there's no layout computation, so the real hook always returns // false — mocking lets us assert the disableTooltip wiring in both states. jest.mock("hooks/useCheckTruncatedElement", () => ({ useCheckTruncatedElement: jest.fn(), })); const mockedTooltipWrapper = (TooltipWrapper as unknown) as jest.Mock; const mockedUseCheckTruncatedElement = useCheckTruncatedElement as jest.Mock; describe("TooltipTruncatedText", () => { beforeEach(() => { mockedTooltipWrapper.mockClear(); mockedUseCheckTruncatedElement.mockReturnValue(false); }); it("forwards fixedPositionStrategy=true to TooltipWrapper when set", () => { render(); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ fixedPositionStrategy: true }) ); }); it("defaults fixedPositionStrategy to false when not provided", () => { render(); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ fixedPositionStrategy: false }) ); }); it("disables the tooltip when text is not truncated", () => { mockedUseCheckTruncatedElement.mockReturnValue(false); render(); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ disableTooltip: true }) ); }); it("enables the tooltip when text is truncated", () => { mockedUseCheckTruncatedElement.mockReturnValue(true); render( ); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ disableTooltip: false }) ); }); it("uses value as the tip content when tooltip prop is not provided", () => { render(); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ tipContent: "just-the-value" }) ); }); it("uses tooltip prop as the tip content when provided, overriding value", () => { render( ); expect(mockedTooltipWrapper.mock.calls[0][0]).toEqual( expect.objectContaining({ tipContent: "custom-tip-content" }) ); }); });