import { screen } from "@testing-library/react"; import { runInAction } from "mobx"; import Terria from "../../lib/Models/Terria"; import ViewState from "../../lib/ReactViewModels/ViewState"; import Disclaimer from "../../lib/ReactViews/Disclaimer"; import { renderWithContexts } from "./withContext"; describe("Disclaimer", function () { let terria: Terria; let viewState: ViewState; beforeEach(function () { terria = new Terria({ baseUrl: "./" }); viewState = new ViewState({ terria: terria, catalogSearchProvider: undefined }); }); describe("with basic disclaimerSettings and disclaimerVisible set to true", function () { it("renders", function () { runInAction(() => { viewState.disclaimerSettings = { title: "Disclaimer", confirmText: "Ok", denyText: "Cancel", message: "Test" }; viewState.disclaimerVisible = true; }); renderWithContexts(, viewState); expect(screen.getByRole("button", { name: "Ok" })).toBeVisible(); }); }); describe("with limited disclaimerSettings and disclaimerVisible set to true", function () { it("renders", function () { runInAction(() => { viewState.disclaimerSettings = {}; viewState.disclaimerVisible = true; }); renderWithContexts(, viewState); expect(screen.getByRole("button", { name: "Ok" })).toBeVisible(); }); }); describe("with disclaimerVisible set to false", function () { it("does not render", function () { runInAction(() => { terria.configParameters.globalDisclaimer = undefined; viewState.disclaimerVisible = false; }); renderWithContexts(, viewState); expect( screen.queryByRole("button", { name: "Ok" }) ).not.toBeInTheDocument(); }); }); });