import { render, screen } from "@testing-library/react"; import WebMapServiceCatalogItem from "../../../../lib/Models/Catalog/Ows/WebMapServiceCatalogItem"; import Terria from "../../../../lib/Models/Terria"; import { formatDateTime } from "../../../../lib/ReactViews/BottomDock/Timeline/DateFormats"; import { terriaTheme } from "../../../../lib/ReactViews/StandardUserInterface"; import DateTimeSelectorSection from "../../../../lib/ReactViews/Workbench/Controls/DateTimeSelectorSection"; describe("DateTimeSelectorSection", function () { let terria: Terria; let wmsItem: WebMapServiceCatalogItem; beforeEach(async function () { terria = new Terria({ baseUrl: "./" }); wmsItem = new WebMapServiceCatalogItem("mywms", terria); wmsItem.setTrait("definition", "url", "/test/WMS/comma_sep_datetimes.xml"); wmsItem.setTrait("definition", "layers", "13_intervals"); await wmsItem.loadMapItems(); }); it("A datetime selector is rendered", function () { render(); // Need to do it the longer way because Travis runs in a diff locale const expectedDateStr = formatDateTime( new Date("2014-01-01T00:00:00.000Z") ); expect( screen.getByRole("button", { name: "dateTime.previous" }) ).toBeVisible(); expect(screen.getByRole("button", { name: "dateTime.next" })).toBeVisible(); expect( screen.getByRole("button", { name: "dateTime.useTimeline" }) ).toBeVisible(); expect( screen.getByRole("button", { name: "dateTime.availableTimeChart" }) ).toBeVisible(); expect(screen.getByRole("button", { name: expectedDateStr })).toBeVisible(); expect(screen.getByText("dateTime.selectorLabel")).toBeVisible(); }); it("A datetime selector uses timeLabel", function () { wmsItem.setTrait("definition", "timeLabel", "Some Label"); render(); expect(screen.getByText("Some Label")).toBeVisible(); }); it("A datetime selector can be formatted", function () { wmsItem.setTrait("definition", "dateFormat", "yyyy"); render(); screen.getByRole("button", { name: "2014" }); }); });