import { runInAction } from "mobx"; import Terria from "../../lib/Models/Terria"; import ViewState from "../../lib/ReactViewModels/ViewState"; import WelcomeMessage from "../../lib/ReactViews/WelcomeMessage/WelcomeMessage"; import { renderWithContexts } from "./withContext"; import { screen, within } from "@testing-library/react"; describe("WelcomeMessage", function () { let terria: Terria; let viewState: ViewState; beforeEach(function () { terria = new Terria({ baseUrl: "./" }); viewState = new ViewState({ terria: terria, catalogSearchProvider: undefined }); }); it("renders when showWelcomeMessage is set to true in config file", function () { runInAction(() => { terria.configParameters.showWelcomeMessage = true; terria.configParameters.welcomeMessageVideo = { videoTitle: "Getting started with the map", videoUrl: "", placeholderImage: "" }; }); const { container } = renderWithContexts(, viewState); const localScreen = within(container); expect(viewState.showWelcomeMessage).toEqual(true); expect(localScreen.getByText("welcomeMessage.title")).toBeVisible(); expect( localScreen.getByText("welcomeMessage.welcomeMessage") ).toBeVisible(); expect(localScreen.getByText("Getting started with the map")).toBeVisible(); expect( localScreen.getByRole("button", { name: "welcomeMessage.tourBtnText" }) ).toBeVisible(); expect( localScreen.getByRole("button", { name: "welcomeMessage.helpBtnText" }) ).toBeVisible(); expect( localScreen.getByRole("button", { name: "welcomeMessage.exploreDataBtnText" }) ).toBeVisible(); expect( localScreen.getByRole("button", { name: "welcomeMessage.dismissText" }) ).toBeVisible(); }); it("doesn't render when showWelcomeMessage is set to false in config file", function () { runInAction(() => (terria.configParameters.showWelcomeMessage = false)); renderWithContexts(, viewState); expect(viewState.showWelcomeMessage).toEqual(false); expect(screen.queryByText("welcomeMessage.title")).not.toBeInTheDocument(); }); });