import React from "react"; import { screen, waitFor } from "@testing-library/react"; import mockServer from "test/mock-server"; import { createCustomRenderer, createMockRouter } from "test/test-utils"; import { createSetupExperienceScriptHandler, errorNoSetupExperienceScriptHandler, } from "test/handlers/setup-experience-handlers"; import { createGetConfigHandler } from "test/handlers/config-handlers"; import { createGetTeamHandler } from "test/handlers/team-handlers"; import { createMockMdmConfig } from "__mocks__/configMock"; import RunScript from "./RunScript"; describe("RunScript", () => { it("should render the 'turn on automatic enrollment' message when MDM isn't configured", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use( createGetConfigHandler({ mdm: createMockMdmConfig({ enabled_and_configured: false }), }) ); mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); expect(screen.getByTestId("spinner")).toBeVisible(); expect( screen.queryByText(/turn on automatic enrollment/) ).not.toBeInTheDocument(); await waitFor(async () => { expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); }); expect( screen.getByText(/turn on automatic enrollment/) ).toBeInTheDocument(); }); it("should render the 'turn on automatic enrollment' message when MDM is configured but not ABM", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use( createGetConfigHandler({ mdm: createMockMdmConfig({ enabled_and_configured: true, apple_bm_enabled_and_configured: false, }), }) ); mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); expect(screen.getByTestId("spinner")).toBeVisible(); expect( screen.queryByText(/turn on automatic enrollment/) ).not.toBeInTheDocument(); await waitFor(async () => { expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); }); expect( screen.getByText(/turn on automatic enrollment/) ).toBeInTheDocument(); }); it("should render the script uploader when no script has been uploaded", async () => { mockServer.use(errorNoSetupExperienceScriptHandler); mockServer.use(createGetConfigHandler()); mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); expect(screen.getByTestId("spinner")).toBeVisible(); expect(screen.queryByLabelText("Upload")).not.toBeInTheDocument(); await waitFor(async () => { expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); }); expect(await screen.findByRole("button", { name: "Upload" })).toBeVisible(); }); it("should render the uploaded script uploader when a script has been uploaded", async () => { mockServer.use(createSetupExperienceScriptHandler()); mockServer.use(createGetConfigHandler()); mockServer.use(createGetTeamHandler({})); const render = createCustomRenderer({ withBackendMock: true, }); render(); expect(screen.getByTestId("spinner")).toBeVisible(); expect( screen.queryByText("Script will run during setup:") ).not.toBeInTheDocument(); await waitFor(async () => { expect(screen.queryByTestId("spinner")).not.toBeInTheDocument(); }); expect( await screen.findByText("Script will run during setup:") ).toBeVisible(); expect(await screen.findByText("Test Script.sh")).toBeVisible(); }); });