mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 13:37:30 +00:00
## 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>
90 lines
2.2 KiB
TypeScript
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();
|
|
});
|
|
});
|