import { screen, within } from "@testing-library/react"; import Terria from "../../../lib/Models/Terria"; import ViewState from "../../../lib/ReactViewModels/ViewState"; import Branding from "../../../lib/ReactViews/SidePanel/Branding"; import { renderWithContexts } from "../withContext"; describe("Branding", function () { let terria: Terria; let viewState: ViewState; beforeEach(function () { terria = new Terria(); viewState = new ViewState({ terria, catalogSearchProvider: undefined }); }); it("renders without issues", function () { terria.configParameters.brandBarElements = ["a thing"]; renderWithContexts(, viewState); expect(screen.getByRole("link", { name: "a thing" })).toBeVisible(); }); it("renders when provided displayOne inside of index", function () { terria.configParameters.brandBarElements = [ "
a thing
" ]; terria.configParameters.displayOneBrand = 0; const { container } = renderWithContexts(, viewState); expect(container.querySelector("details")).toBeTruthy(); expect(within(container).getByText("a thing")).toBeVisible(); expect(within(container).queryByRole("link")).not.toBeInTheDocument(); }); it("renders when provided displayOne inside of index, but targetting empty string", function () { terria.configParameters.brandBarElements = [ "", "progress is a html element!" ]; terria.configParameters.displayOneBrand = 0; const { container } = renderWithContexts(, viewState); expect(within(container).getByRole("progressbar")).toBeVisible(); expect( within(container).getByText("progress is a html element!") ).toBeVisible(); }); it("renders when provided displayOne outside of index", function () { terria.configParameters.brandBarElements = [ "", "meter is a html element!" ]; terria.configParameters.displayOneBrand = 5; renderWithContexts(, viewState); expect(screen.getByRole("meter")).toBeVisible(); }); it("renders brandBarElements when provided brandBarSmallElements", function () { terria.configParameters.brandBarElements = [ "", "meter is a html element!" ]; terria.configParameters.brandBarSmallElements = [ "small is a html element!", "a is a html element!" ]; terria.configParameters.displayOneBrand = 1; renderWithContexts(, viewState); expect(screen.getByRole("meter")).toBeVisible(); }); it("renders when provided brandBarSmallElements and ignores displayOneBrand", function () { terria.configParameters.brandBarElements = [ "", "meter is a html element!" ]; terria.configParameters.brandBarSmallElements = [ "small is a html element!", "a is a html element!" ]; terria.configParameters.displayOneBrand = 1; viewState.useSmallScreenInterface = true; renderWithContexts(, viewState); expect(screen.getByText("small is a html element!")).toBeVisible(); expect( screen.getByRole("link", { name: "a is a html element!" }) ).toBeVisible(); expect(screen.queryByRole("meter")).not.toBeInTheDocument(); }); });