import { EllipsoidTerrainProvider } from "../../../Source/Cesium.js"; import { FeatureDetection } from "../../../Source/Cesium.js"; import { ImageryLayerCollection } from "../../../Source/Cesium.js"; import DomEventSimulator from "../../DomEventSimulator.js"; import { BaseLayerPicker } from "../../../Source/Cesium.js"; describe("Widgets/BaseLayerPicker/BaseLayerPicker", function () { function MockGlobe() { this.imageryLayers = new ImageryLayerCollection(); this.terrainProvider = new EllipsoidTerrainProvider(); } it("can create and destroy", function () { var container = document.createElement("div"); container.id = "testContainer"; document.body.appendChild(container); var globe = new MockGlobe(); var widget = new BaseLayerPicker("testContainer", { globe: globe, }); expect(widget.container).toBe(container); expect(widget.viewModel.globe).toBe(globe); expect(widget.isDestroyed()).toEqual(false); widget.destroy(); expect(widget.isDestroyed()).toEqual(true); document.body.removeChild(container); }); function addCloseOnInputSpec(name, func) { it( name + " event closes dropdown if target is not inside container", function () { var container = document.createElement("div"); container.id = "testContainer"; document.body.appendChild(container); var widget = new BaseLayerPicker("testContainer", { globe: new MockGlobe(), }); widget.viewModel.dropDownVisible = true; func(document.body); expect(widget.viewModel.dropDownVisible).toEqual(false); widget.viewModel.dropDownVisible = true; func(container.firstChild); expect(widget.viewModel.dropDownVisible).toEqual(true); widget.destroy(); document.body.removeChild(container); } ); } if (FeatureDetection.supportsPointerEvents()) { addCloseOnInputSpec("pointerDown", DomEventSimulator.firePointerDown); } else { addCloseOnInputSpec("mousedown", DomEventSimulator.fireMouseDown); addCloseOnInputSpec("touchstart", DomEventSimulator.fireTouchStart); } it("constructor throws with no layer collection", function () { expect(function () { return new BaseLayerPicker(document.body, undefined); }).toThrowDeveloperError(); }); it("constructor throws with no element", function () { expect(function () { return new BaseLayerPicker(undefined, { globe: new MockGlobe(), }); }).toThrowDeveloperError(); }); it("constructor throws with string element that does not exist", function () { expect(function () { return new BaseLayerPicker("does not exist", { globe: new MockGlobe(), }); }).toThrowDeveloperError(); }); });