From 32c26c25248f777b941d3ac29b7369cdac2b3140 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 3 Jul 2017 12:24:40 -0600 Subject: [PATCH] More consistent clean up --- test/spec/ol/control/control.test.js | 6 +- test/spec/ol/control/scaleline.test.js | 18 ++- .../ol/interaction/mousewheelzoom.test.js | 126 ++++++++++-------- test/test-extensions.js | 4 +- 4 files changed, 83 insertions(+), 71 deletions(-) diff --git a/test/spec/ol/control/control.test.js b/test/spec/ol/control/control.test.js index 3b3b65d103..655b64d6c8 100644 --- a/test/spec/ol/control/control.test.js +++ b/test/spec/ol/control/control.test.js @@ -16,7 +16,9 @@ describe('ol.control.Control', function() { }); afterEach(function() { - map.dispose(); + disposeMap(map); + map = null; + control = null; }); describe('dispose', function() { @@ -36,6 +38,7 @@ describe('ol.control.Control\'s target', function() { var ctrl = new ol.control.Control({target: 'mycontrol'}); expect(ctrl.target_.id).to.equal('mycontrol'); ctrl.dispose(); + target.parentNode.removeChild(target); }); it('accepts element for target', function() { var target = document.createElement('div'); @@ -44,6 +47,7 @@ describe('ol.control.Control\'s target', function() { var ctrl = new ol.control.Control({target: target}); expect(ctrl.target_.id).to.equal('mycontrol'); ctrl.dispose(); + target.parentNode.removeChild(target); }); it('ignores non-existing target id', function() { var ctrl = new ol.control.Control({target: 'doesnotexist'}); diff --git a/test/spec/ol/control/scaleline.test.js b/test/spec/ol/control/scaleline.test.js index 709a20a428..b2642defb7 100644 --- a/test/spec/ol/control/scaleline.test.js +++ b/test/spec/ol/control/scaleline.test.js @@ -6,19 +6,17 @@ goog.require('ol.control.ScaleLine'); goog.require('ol.proj'); describe('ol.control.ScaleLine', function() { - var mapDiv; var map; beforeEach(function() { - mapDiv = document.createElement('div'); - document.body.appendChild(mapDiv); + var target = document.createElement('div'); + document.body.appendChild(target); map = new ol.Map({ - target: mapDiv + target: target }); }); afterEach(function() { - map.dispose(); - mapDiv.parentNode.removeChild(mapDiv); - mapDiv = null; + disposeMap(map); + map = null; }); describe('constructor', function() { @@ -34,7 +32,7 @@ describe('ol.control.ScaleLine', function() { it('defaults to "ol-scale-line"', function() { var ctrl = new ol.control.ScaleLine(); ctrl.setMap(map); - var element = document.querySelector('.ol-scale-line', mapDiv); + var element = document.querySelector('.ol-scale-line', map.getTarget()); expect(element).to.not.be(null); expect(element).to.be.a(HTMLDivElement); }); @@ -45,10 +43,10 @@ describe('ol.control.ScaleLine', function() { ctrl.setMap(map); // check that the default was not chosen - var element1 = document.querySelector('.ol-scale-line', mapDiv); + var element1 = document.querySelector('.ol-scale-line', map.getTarget()); expect(element1).to.be(null); // check if the configured classname was chosen - var element2 = document.querySelector('.humpty-dumpty', mapDiv); + var element2 = document.querySelector('.humpty-dumpty', map.getTarget()); expect(element2).to.not.be(null); expect(element2).to.be.a(HTMLDivElement); }); diff --git a/test/spec/ol/interaction/mousewheelzoom.test.js b/test/spec/ol/interaction/mousewheelzoom.test.js index 9de7463337..a477a1ad86 100644 --- a/test/spec/ol/interaction/mousewheelzoom.test.js +++ b/test/spec/ol/interaction/mousewheelzoom.test.js @@ -35,15 +35,16 @@ describe('ol.interaction.MouseWheelZoom', function() { describe('timeout duration', function() { var clock; beforeEach(function() { + sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); clock = sinon.useFakeTimers(); }); afterEach(function() { clock.restore(); + ol.interaction.Interaction.zoomByDelta.restore(); }); it('works with the defaut value', function(done) { - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); var event = new ol.MapBrowserEvent('mousewheel', map, { type: 'mousewheel', target: map.getViewport(), @@ -52,11 +53,10 @@ describe('ol.interaction.MouseWheelZoom', function() { map.handleMapBrowserEvent(event); clock.tick(50); // default timeout is 80 ms, not called yet - expect(spy.called).to.be(false); + expect(ol.interaction.Interaction.zoomByDelta.called).to.be(false); clock.tick(30); - expect(spy.called).to.be(true); + expect(ol.interaction.Interaction.zoomByDelta.called).to.be(true); - ol.interaction.Interaction.zoomByDelta.restore(); done(); }); @@ -102,66 +102,74 @@ describe('ol.interaction.MouseWheelZoom', function() { map.handleMapBrowserEvent(event); }); - it('works in DOM_DELTA_LINE mode (wheel)', function(done) { - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); + describe('spying on ol.interaction.Interaction.zoomByDelta', function() { + beforeEach(function() { + sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); + }); + afterEach(function() { ol.interaction.Interaction.zoomByDelta.restore(); - done(); }); - var event = new ol.MapBrowserEvent('wheel', map, { - type: 'wheel', - deltaMode: WheelEvent.DOM_DELTA_LINE, - deltaY: 3.714599609375, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault + + it('works in DOM_DELTA_LINE mode (wheel)', function(done) { + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + done(); + }); + var event = new ol.MapBrowserEvent('wheel', map, { + type: 'wheel', + deltaMode: WheelEvent.DOM_DELTA_LINE, + deltaY: 3.714599609375, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); + + it('works on Safari (wheel)', function(done) { + var origHasSafari = ol.has.SAFARI; + ol.has.SAFARI = true; + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent('mousewheel', map, { + type: 'mousewheel', + wheelDeltaY: -50, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + + it('works on other browsers (wheel)', function(done) { + var origHasSafari = ol.has.SAFARI; + ol.has.SAFARI = false; + map.once('postrender', function() { + var call = ol.interaction.Interaction.zoomByDelta.getCall(0); + expect(call.args[1]).to.be(-1); + expect(call.args[2]).to.eql([0, 0]); + ol.has.SAFARI = origHasSafari; + done(); + }); + var event = new ol.MapBrowserEvent('mousewheel', map, { + type: 'mousewheel', + wheelDeltaY: -120, + target: map.getViewport(), + preventDefault: ol.events.Event.prototype.preventDefault + }); + event.coordinate = [0, 0]; + map.handleMapBrowserEvent(event); + }); + }); - it('works on Safari (wheel)', function(done) { - var origHasSafari = ol.has.SAFARI; - ol.has.SAFARI = true; - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); - ol.interaction.Interaction.zoomByDelta.restore(); - ol.has.SAFARI = origHasSafari; - done(); - }); - var event = new ol.MapBrowserEvent('mousewheel', map, { - type: 'mousewheel', - wheelDeltaY: -50, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault - }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); - }); - - it('works on other browsers (wheel)', function(done) { - var origHasSafari = ol.has.SAFARI; - ol.has.SAFARI = false; - var spy = sinon.spy(ol.interaction.Interaction, 'zoomByDelta'); - map.once('postrender', function() { - expect(spy.getCall(0).args[1]).to.be(-1); - expect(spy.getCall(0).args[2]).to.eql([0, 0]); - ol.interaction.Interaction.zoomByDelta.restore(); - ol.has.SAFARI = origHasSafari; - done(); - }); - var event = new ol.MapBrowserEvent('mousewheel', map, { - type: 'mousewheel', - wheelDeltaY: -120, - target: map.getViewport(), - preventDefault: ol.events.Event.prototype.preventDefault - }); - event.coordinate = [0, 0]; - map.handleMapBrowserEvent(event); - }); }); }); diff --git a/test/test-extensions.js b/test/test-extensions.js index 03122b1a51..3988e14e30 100644 --- a/test/test-extensions.js +++ b/test/test-extensions.js @@ -368,8 +368,10 @@ global.disposeMap = function(map) { var target = map.getTarget(); map.setTarget(null); + if (target && target.parentNode) { + target.parentNode.removeChild(target); + } map.dispose(); - document.body.removeChild(target); }; global.assertWebGL = function(map) {