import { render, screen } from "@testing-library/react";
import { ThemeProvider } from "styled-components";
import WebMapServiceCatalogItem from "../../lib/Models/Catalog/Ows/WebMapServiceCatalogItem";
import Terria from "../../lib/Models/Terria";
import { terriaTheme } from "../../lib/ReactViews/StandardUserInterface";
import ShortReport from "../../lib/ReactViews/Workbench/Controls/ShortReport";
import userEvent from "@testing-library/user-event";
describe("ShortReport", function () {
let terria: Terria;
let wmsItem: WebMapServiceCatalogItem;
beforeEach(function () {
terria = new Terria({
baseUrl: "./"
});
wmsItem = new WebMapServiceCatalogItem("mochiwms", terria);
wmsItem.setTrait("definition", "shortReportSections", [
{
name: "Report Name 1",
content: "Some content which is showing",
show: true
},
{
name: "Report Name 2",
content: "Some content which is hidden by default",
show: false
},
{
name: "Report Name - with no content",
content: undefined,
show: undefined
}
]);
});
it("renders section content", function () {
render(
);
// All three report names should be rendered
expect(screen.getByRole("button", { name: "Report Name 1" })).toBeVisible();
expect(screen.getByText("Some content which is showing")).toBeVisible();
expect(screen.getByRole("button", { name: "Report Name 2" })).toBeVisible();
expect(
screen.queryByText("Some content which is hidden by default")
).not.toBeInTheDocument();
expect(screen.getByText("Report Name - with no content")).toBeVisible();
});
it("should expand and collapse sections when the section name is clicked", async function () {
render(
);
const section2Btn = screen.getByRole("button", { name: "Report Name 2" });
expect(
screen.queryByText("Some content which is hidden by default")
).not.toBeInTheDocument();
await userEvent.click(section2Btn);
expect(
screen.getByText("Some content which is hidden by default")
).toBeVisible();
const section1Btn = screen.getByRole("button", { name: "Report Name 1" });
expect(screen.getByText("Some content which is showing")).toBeVisible();
await userEvent.click(section1Btn);
expect(
screen.queryByText("Some content which is showing")
).not.toBeInTheDocument();
});
});