fleet/frontend/components/TableContainer/DataTable/SoftwareNameCell/SoftwareNameCell.tests.tsx

96 lines
2.9 KiB
TypeScript

import React from "react";
import { screen } from "@testing-library/react";
import { createCustomRenderer, createMockRouter } from "test/test-utils";
import SoftwareNameCell from "./SoftwareNameCell";
const mockRouter = createMockRouter();
describe("SoftwareNameCell", () => {
const defaultProps = {
name: "Fleet Desktop",
source: "fleet",
};
it("renders a non-clickable cell when no router or path is provided", () => {
const render = createCustomRenderer();
render(<SoftwareNameCell {...defaultProps} />);
expect(screen.getAllByText(/Fleet Desktop/i).length).toBeGreaterThan(0);
// Should not render as a link
expect(screen.queryByRole("link")).toBeNull();
});
it("renders with a suffix icon and tooltip when hasPackage is true", async () => {
const render = createCustomRenderer();
render(
<SoftwareNameCell
{...defaultProps}
router={mockRouter}
path="/software/1"
hasPackage
isSelfService={false}
installType="manual"
/>
);
expect(
screen.getByText("Software can be installed on Host details page.")
).toBeInTheDocument();
});
it("renders the correct count for tooltip for automatic installType", () => {
const render = createCustomRenderer();
render(
<SoftwareNameCell
{...defaultProps}
router={mockRouter}
path="/software/1"
hasPackage
installType="automatic"
automaticInstallPoliciesCount={2}
/>
);
expect(screen.getByText("2 policies trigger install.")).toBeInTheDocument();
});
it("renders the correct tooltip for automaticSelfService", () => {
const render = createCustomRenderer();
render(
<SoftwareNameCell
{...defaultProps}
router={mockRouter}
path="/software/1"
hasPackage
isSelfService
installType="automatic"
automaticInstallPoliciesCount={1}
/>
);
expect(screen.getByText(/A policy triggers install./)).toBeInTheDocument();
expect(screen.getByText(/End users can reinstall/)).toBeInTheDocument();
});
it("renders with SoftwareIcon and truncated tooltip on myDevicePage", () => {
const render = createCustomRenderer();
render(<SoftwareNameCell {...defaultProps} myDevicePage />);
expect(screen.getAllByText(/Fleet Desktop/i).length).toBeGreaterThan(0);
// Should not render as a link
expect(screen.queryByRole("link")).toBeNull();
});
it("renders the self-service tooltip when isSelfService is true and installType is not automatic", () => {
const render = createCustomRenderer();
render(
<SoftwareNameCell
{...defaultProps}
router={mockRouter}
path="/software/1"
hasPackage
isSelfService
installType="manual"
/>
);
// Check for the SELF_SERVICE_TOOLTIP content
expect(screen.getByText(/End users can install/)).toBeInTheDocument();
});
});