fleet/frontend/components/GitOpsModeTooltipWrapper/GitOpsModeTooltipWrapper.tests.tsx
jacobshandling 06c48216f7
UI: Add Tooltip show delay across app (#33091)
## For #31869

- Add fine grain controls for tooltip show and hide delay behavior
- Default to 250ms show delay across app
- Update ~30 unit tests to expect new delay
- See
[note](https://github.com/fleetdm/fleet/issues/31869#issuecomment-3300660487)


https://github.com/user-attachments/assets/5969e0f7-c137-491f-8430-6f21d01b9350

- [x] Changes file added for user-visible changes in `changes/`
- [x] QA'd all new/changed functionality manually

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-09-18 09:42:30 -07:00

90 lines
2.2 KiB
TypeScript

import React from "react";
import { screen, waitFor } from "@testing-library/react";
import { createCustomRenderer } from "test/test-utils";
import Button from "components/buttons/Button";
import GitOpsModeTooltipWrapper from "./GitOpsModeTooltipWrapper";
describe("GitOpsModeTooltipWrapper", () => {
it("renders clickable children without a tooltip when GOM is not enabled", async () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
isTeamAdmin: false,
// thanks, DeepPartial!
config: {
gitops: {
gitops_mode_enabled: false,
repository_url: "",
},
},
},
},
});
const onSave = jest.fn();
const { user } = render(
<GitOpsModeTooltipWrapper
renderChildren={(disableChildren) => (
<Button disabled={disableChildren} onClick={onSave}>
Save
</Button>
)}
/>
);
const btn = screen.getByText("Save");
expect(btn).toBeInTheDocument();
await user.hover(btn);
expect(screen.queryByRole("tooltip")).toBeNull();
await user.click(btn);
expect(onSave).toHaveBeenCalled();
});
it("renders non-clickable children with the tooltip when GOM is enabled", async () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
isTeamAdmin: false,
// thanks, DeepPartial!
config: {
gitops: {
gitops_mode_enabled: true,
repository_url: "a.b.cc",
},
},
},
},
});
const onSave = jest.fn();
const { user } = render(
<GitOpsModeTooltipWrapper
renderChildren={(disableChildren) => (
<Button disabled={disableChildren} onClick={onSave}>
Save
</Button>
)}
/>
);
const btn = screen.getByText("Save");
expect(btn).toBeInTheDocument();
await user.hover(btn);
await waitFor(() => {
expect(screen.getByRole("tooltip")).toBeInTheDocument();
});
await user.click(btn);
expect(onSave).not.toHaveBeenCalled();
});
});