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 = [
"",
""
];
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();
});
});