import DragRotateAndZoom from '../../../../../src/ol/interaction/DragRotateAndZoom.js'; import Event from '../../../../../src/ol/events/Event.js'; import Map from '../../../../../src/ol/Map.js'; import MapBrowserEvent from '../../../../../src/ol/MapBrowserEvent.js'; import VectorLayer from '../../../../../src/ol/layer/Vector.js'; import VectorSource from '../../../../../src/ol/source/Vector.js'; import View from '../../../../../src/ol/View.js'; describe('ol.interaction.DragRotateAndZoom', function () { describe('constructor', function () { it('can be constructed without arguments', function () { const instance = new DragRotateAndZoom(); expect(instance).to.be.an(DragRotateAndZoom); }); }); describe('#handleDragEvent()', function () { let target, map, interaction; const width = 360; const height = 180; beforeEach(function (done) { target = document.createElement('div'); const style = target.style; style.position = 'absolute'; style.left = '-1000px'; style.top = '-1000px'; style.width = width + 'px'; style.height = height + 'px'; document.body.appendChild(target); const source = new VectorSource(); const layer = new VectorLayer({source: source}); interaction = new DragRotateAndZoom(); map = new Map({ target: target, layers: [layer], interactions: [interaction], view: new View({ projection: 'EPSG:4326', center: [0, 0], resolution: 1, }), }); map.once('postrender', function () { done(); }); }); afterEach(function () { map.dispose(); document.body.removeChild(target); }); it('does not rotate when rotation is disabled on the view', function () { const pointerEvent = new Event(); pointerEvent.type = 'pointermove'; pointerEvent.clientX = 20; pointerEvent.clientY = 10; pointerEvent.pointerType = 'mouse'; let event = new MapBrowserEvent('pointermove', map, pointerEvent, true); interaction.lastAngle_ = Math.PI; let callCount = 0; let view = map.getView(); view.on('change:rotation', function () { callCount++; }); interaction.handleDragEvent(event); expect(callCount).to.be(1); expect(interaction.lastAngle_).to.be(-0.8308214428190254); callCount = 0; view = new View({ projection: 'EPSG:4326', center: [0, 0], resolution: 1, enableRotation: false, }); map.setView(view); view.on('change:rotation', function () { callCount++; }); pointerEvent.type = 'pointermove'; pointerEvent.clientX = 24; pointerEvent.clientY = 16; pointerEvent.pointerType = 'mouse'; event = new MapBrowserEvent('pointermove', map, pointerEvent, true); interaction.handleDragEvent(event); expect(callCount).to.be(0); }); }); });