DSDSWeb/static/js/Cesium-1.53/Specs/Widgets/BaseLayerPicker/BaseLayerPickerSpec.js

90 lines
2.9 KiB
JavaScript

defineSuite([
'Widgets/BaseLayerPicker/BaseLayerPicker',
'Core/EllipsoidTerrainProvider',
'Core/FeatureDetection',
'Scene/ImageryLayerCollection',
'Specs/DomEventSimulator'
], function(
BaseLayerPicker,
EllipsoidTerrainProvider,
FeatureDetection,
ImageryLayerCollection,
DomEventSimulator) {
'use strict';
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();
});
});