terriajs
Version:
Geospatial data visualization platform.
109 lines (84 loc) • 2.97 kB
JavaScript
;
import CompositeCatalogItem from "../../lib/Models/Catalog/CatalogItems/CompositeCatalogItem";
import TerrainCatalogItem from "../../lib/Models/TerrainCatalogItem";
import Terria from "../../lib/Models/Terria";
describe("TerrainCatalogItem", function () {
var terria;
var item;
beforeEach(function () {
terria = new Terria({
baseUrl: "./"
});
item = new TerrainCatalogItem(terria);
});
it("sets terrainProvider on Cesium scene when enabled", async function () {
var fakeTerrainProvider = {};
spyOn(item, "_createTerrainProvider").and.returnValue(fakeTerrainProvider);
terria.cesium = {
scene: {
terrainProvider: undefined
}
};
item.isEnabled = true;
await item.load();
expect(terria.cesium.scene.terrainProvider).toBe(fakeTerrainProvider);
});
it("restores previous terrainProvider when disabled", async function () {
var fakeTerrainProvider = {};
spyOn(item, "_createTerrainProvider").and.returnValue(fakeTerrainProvider);
var originalTerrainProvider = {};
terria.cesium = {
scene: {
terrainProvider: originalTerrainProvider
}
};
item.isEnabled = true;
await item.load();
expect(terria.cesium.scene.terrainProvider).toBe(fakeTerrainProvider);
item.isEnabled = false;
expect(terria.cesium.scene.terrainProvider).toBe(originalTerrainProvider);
});
it("hides other terrainProvider catalog items when enabled", async function () {
terria.cesium = {
scene: {
terrainProvider: undefined
}
};
var enabledItem = new TerrainCatalogItem(terria);
spyOn(enabledItem, "_createTerrainProvider").and.returnValue({});
enabledItem.isEnabled = true;
await enabledItem.load();
spyOn(item, "_createTerrainProvider").and.returnValue({});
item.isEnabled = true;
await item.load();
expect(enabledItem.isShown).toBe(false);
});
it("hides CompositeCatalogItem containing terrain when enabled", async function () {
terria.cesium = {
scene: {
terrainProvider: undefined
}
};
var composite = new CompositeCatalogItem(terria);
var enabledItem = new TerrainCatalogItem(terria);
spyOn(enabledItem, "_createTerrainProvider").and.returnValue({});
composite.add(enabledItem);
composite.isEnabled = true;
await composite.load();
spyOn(item, "_createTerrainProvider").and.returnValue({});
item.isEnabled = true;
await item.load();
expect(composite.isShown).toBe(false);
});
it("throws when shown in 2D", async function () {
terria.leaflet = {};
spyOn(item, "_createTerrainProvider").and.returnValue({});
spyOn(terria.error, "raiseEvent");
item.isEnabled = true;
await item.load();
expect(terria.raiseErrorToUser).toHaveBeenCalled();
expect(item.isShown).toBe(false);
item.isShown = true;
expect(terria.raiseErrorToUser.calls.count()).toBe(2);
});
});