import React from "react";
import { screen } from "@testing-library/react";
import { createCustomRenderer, createMockRouter } from "test/test-utils";
import createMockUser from "__mocks__/userMock";
import {
createMockSoftwareTitlesResponse,
createMockSoftwareVersionsResponse,
} from "__mocks__/softwareMock";
import { noop } from "lodash";
import SoftwareTable from "./SoftwareTable";
const mockRouter = createMockRouter();
describe("Software table", () => {
it("Renders the page-wide disabled state when software inventory is disabled", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(screen.getByText("Software inventory disabled")).toBeInTheDocument();
expect(screen.queryByText("Vulnerability")).toBeNull();
expect(screen.queryByText("All software")).toBeNull();
expect(screen.queryByText("Available for install")).toBeNull();
});
it("Renders the page-wide empty state when no software are present hiding 'Available for install' filter", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(screen.getByText("No software detected")).toBeInTheDocument();
expect(
screen.getByText("Expecting to see software? Check back later.")
).toBeInTheDocument();
expect(screen.getByText("0 items")).toBeInTheDocument();
expect(screen.queryByText("Search")).toBeNull();
expect(screen.queryByText("Updated")).toBeNull();
expect(screen.queryByText("All software")).toBeNull();
expect(screen.queryByText("Available for install")).toBeNull();
});
it("Renders the page-wide empty state hiding 'Available for install' filter when search query does not exist but versions toggle is applied", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(screen.getByText("No software detected")).toBeInTheDocument();
expect(
screen.getByText("Expecting to see software? Check back later.")
).toBeInTheDocument();
expect(screen.queryByText("All software")).toBeNull();
expect(screen.queryByText("Available for install")).toBeNull();
});
it("Renders the empty search state and 'Available for install' filter when search query does not exist but filter is applied", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(
screen.getByText("No items match the current search criteria")
).toBeInTheDocument();
expect(
screen.getByText(
"Expecting to see installable software? Check back later."
)
).toBeInTheDocument();
expect(screen.getByText("Available for install")).toBeInTheDocument();
});
it("Renders the empty search state and 'Available for install' filter when search query does not exist but vulnerability filter is applied", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(
screen.getByText("No items match the current search criteria")
).toBeInTheDocument();
expect(
screen.getByText(
"Expecting to see vulnerable software? Check back later."
)
).toBeInTheDocument();
expect(screen.getByText("All software")).toBeInTheDocument();
});
it("does not render 'Available for install' filter when team id is undefined (Fleet Free/All teams)", () => {
const render = createCustomRenderer({
context: {
app: {
isGlobalAdmin: true,
currentUser: createMockUser(),
},
},
});
render(
);
expect(screen.queryByText("All software")).toBeNull();
expect(screen.queryByText("Available for install")).toBeNull();
});
});