terriajs
Version:
Geospatial data visualization platform.
96 lines (80 loc) • 3.31 kB
text/typescript
import { runInAction, when } from "mobx";
import WebMapServiceCatalogItem from "../../lib/Models/Catalog/Ows/WebMapServiceCatalogItem";
import DefaultTimelineModel from "../../lib/Models/DefaultTimelineModel";
import Terria from "../../lib/Models/Terria";
describe("TimelineStack", function () {
let terria: Terria;
let wms: WebMapServiceCatalogItem;
beforeEach(async function () {
terria = new Terria({
baseUrl: "./"
});
wms = new WebMapServiceCatalogItem("test", terria);
terria.addModel(wms);
wms.setTrait("definition", "url", "test/WMS/period_datetimes.xml");
await wms.loadMapItems();
terria.timelineStack.addToTop(wms);
terria.timelineStack.activate();
});
afterEach(function () {
terria.timelineStack.deactivate();
});
it(" - is populated with items", function () {
expect(terria.timelineStack.items.length).toBe(1);
});
it(" - contains method works", function () {
expect(terria.timelineStack.contains(wms)).toBe(true);
});
it(" - gets the right item from the top", async function () {
expect(terria.timelineStack.top).toBe(wms);
const wms2 = new WebMapServiceCatalogItem("test2", terria);
terria.addModel(wms2);
wms2.setTrait("definition", "url", "test/WMS/comma_sep_datetimes.xml");
await wms2.loadMapItems();
terria.timelineStack.addToTop(wms2);
expect(terria.timelineStack.top).toBe(wms2);
terria.timelineStack.remove(wms2);
expect(terria.timelineStack.top).toBe(wms);
});
it("automatically syncs the clock with the top item", async function () {
const wms2 = new WebMapServiceCatalogItem("test2", terria);
terria.addModel(wms2);
wms2.setTrait("definition", "url", "test/WMS/comma_sep_datetimes.xml");
wms2.setTrait("user", "isPaused", false);
await wms2.loadMapItems();
terria.timelineStack.addToTop(wms2);
terria.timelineStack.clock.shouldAnimate = true;
wms2.setTrait("user", "isPaused", true);
await when(() => terria.timelineStack.top?.isPaused === true);
expect(terria.timelineStack.clock.shouldAnimate).toBe(false);
});
describe("toggling 'always show timeline'", function () {
const DEFAULT_TIMELINE_MODEL_ID = "defaultTimeline";
it("adds the default timeline model to terria when enabled", function () {
expect(terria.timelineStack.alwaysShowingTimeline).toBe(false);
expect(
terria.getModelById(DefaultTimelineModel, DEFAULT_TIMELINE_MODEL_ID)
).toBeUndefined();
runInAction(() => {
terria.timelineStack.setAlwaysShowTimeline(true);
});
expect(
terria.getModelById(DefaultTimelineModel, DEFAULT_TIMELINE_MODEL_ID)
).toBe(terria.timelineStack.defaultTimeVarying as any);
});
it("removes the default timeline model from terria when disabled", function () {
runInAction(() => {
terria.timelineStack.setAlwaysShowTimeline(true);
});
expect(
terria.getModelById(DefaultTimelineModel, DEFAULT_TIMELINE_MODEL_ID)
).toBe(terria.timelineStack.defaultTimeVarying as any);
runInAction(() => {
terria.timelineStack.setAlwaysShowTimeline(false);
});
expect(
terria.getModelById(DefaultTimelineModel, DEFAULT_TIMELINE_MODEL_ID)
).toBe(undefined);
});
});
});