import React from "react"; import { screen } from "@testing-library/react"; import { createCustomRenderer } from "test/test-utils"; import createMockUser from "__mocks__/userMock"; import { createMockSoftwareTitlesResponse, createMockSoftwareVersionsResponse, } from "__mocks__/softwareMock"; import { noop } from "lodash"; import SoftwareTable from "./SoftwareTable"; // TODO: figure out how to mock the router properly. const mockRouter = { push: jest.fn(), replace: jest.fn(), goBack: jest.fn(), goForward: jest.fn(), go: jest.fn(), setRouteLeaveHook: jest.fn(), isActive: jest.fn(), createHref: jest.fn(), createPath: jest.fn(), }; 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(); }); it("Renders the page-wide empty state when no software are present", () => { 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(); }); it("Renders the page-wide empty state 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(); }); it("Renders the empty search state when search query does not exist but dropdown 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(); }); it("Renders the empty search state 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(); }); });