import { act, render, screen } from "@testing-library/react";
import { runInAction } from "mobx";
import { ThemeProvider } from "styled-components";
import GeoJsonCatalogItem from "../../../lib/Models/Catalog/CatalogItems/GeoJsonCatalogItem";
import WebMapServiceCatalogItem from "../../../lib/Models/Catalog/Ows/WebMapServiceCatalogItem";
import CommonStrata from "../../../lib/Models/Definition/CommonStrata";
import updateModelFromJson from "../../../lib/Models/Definition/updateModelFromJson";
import Terria from "../../../lib/Models/Terria";
import Description from "../../../lib/ReactViews/Preview/Description";
import { terriaTheme } from "../../../lib/ReactViews/StandardUserInterface";
describe("DescriptionSpec", function () {
let terria: Terria;
let wmsItem: WebMapServiceCatalogItem;
beforeEach(async function () {
terria = new Terria({
baseUrl: "./"
});
wmsItem = new WebMapServiceCatalogItem("test", terria);
runInAction(() => {
wmsItem.setTrait("definition", "url", "test/WMS/single_metadata_url.xml");
});
await wmsItem.loadMetadata();
});
it("renders metadataUrls", function () {
render(
);
expect(
screen.getByRole("link", { name: "http://examplemetadata.com" })
).toBeVisible();
});
it("renders metadataUrl button", function () {
runInAction(() => {
updateModelFromJson(wmsItem, "definition", {
metadataUrls: [{ title: "Some Title" }]
});
});
render(
);
expect(screen.queryByRole("link", { name: "Some Title" })).toBeVisible();
});
it("renders dataUrls", function () {
runInAction(() => {
updateModelFromJson(wmsItem, "definition", {
metadataUrls: [{ title: "Some Title" }],
dataUrls: [
{
url: "http://exampledata-data.com",
type: "wfs-complete"
}
]
});
});
render(
);
expect(
screen.getByRole("link", { name: "http://exampledata-data.com" })
).toBeVisible();
});
it("renders dataUrl with title", function () {
runInAction(() => {
updateModelFromJson(wmsItem, "definition", {
metadataUrls: [{ title: "Some Title" }],
dataUrls: [
{
url: "http://exampledata.com",
type: "wfs-complete",
title: "some link"
}
]
});
});
render(
);
expect(screen.queryByRole("link", { name: "some link" })).toBeVisible();
});
it("respects hideDefaultDescription", function () {
const geoJsonItem = new GeoJsonCatalogItem("test-geojson", terria);
runInAction(() => {
geoJsonItem.setTrait(CommonStrata.definition, "description", "test");
});
const { container, rerender } = render(
);
expect(
screen.getByRole("heading", { name: "description.name" })
).toBeVisible();
expect(screen.getByText("test")).toBeVisible();
act(() =>
runInAction(() => {
geoJsonItem.setTrait(CommonStrata.definition, "description", "");
})
);
rerender(
);
expect(screen.getByText("description.dataNotLocal")).toBeVisible();
act(() => {
runInAction(() => {
geoJsonItem.setTrait(
CommonStrata.definition,
"hideDefaultDescription",
true
);
});
});
rerender(
);
const showNoDescription = container.querySelectorAll("p");
expect(showNoDescription.length).toEqual(0);
});
});