From 255c80d34113290e517bc6563d1827de76cdf008 Mon Sep 17 00:00:00 2001 From: Noenandre <5470915+noenandre@users.noreply.github.com> Date: Fri, 3 Mar 2023 16:43:54 +0100 Subject: [PATCH] Test for init and reset methods on service. Bugfix for reset. Adjusted expectation of number of svg layers. --- modules/services/vegbilder.js | 2 +- test/spec/services/vegbilder.js | 48 +++++++++++++++++++++++++++++++++ test/spec/spec_helpers.js | 43 +++++++++++++++++++++++++++++ test/spec/svg/layers.js | 9 ++++--- 4 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 test/spec/services/vegbilder.js diff --git a/modules/services/vegbilder.js b/modules/services/vegbilder.js index 350dc384e..36d0b52fb 100644 --- a/modules/services/vegbilder.js +++ b/modules/services/vegbilder.js @@ -323,7 +323,7 @@ export default { reset: async function () { if (_vegbilderCache) { for (let layer of _vegbilderCache.wfslayers.values()) { - for (let tile of layer.values()) { abortRequest(tile); } + for (let tile of layer.inflight.values()) { abortRequest(tile); } } } diff --git a/test/spec/services/vegbilder.js b/test/spec/services/vegbilder.js new file mode 100644 index 000000000..dd4f98f32 --- /dev/null +++ b/test/spec/services/vegbilder.js @@ -0,0 +1,48 @@ +describe('iD.serviceVegbilder', function() { + const dimensions = [64, 64]; + let context, vegbilder; + + before(function() { + iD.services.vegbilder = iD.serviceVegbilder; + }); + + after(function() { + delete iD.services.vegbilder; + }); + + beforeEach(async function() { + context = iD.coreContext().assetPath('../dist/').init(); + context.projection + .scale(iD.geoZoomToScale(14)) + .translate([-116508, 0]) // 10,0 + .clipExtent([[0,0], dimensions]); + + vegbilder = iD.services.vegbilder; + await vegbilder.reset(); + }); + + afterEach(function() { + fetchMock.reset(); + }); + + describe('#init', function() { + it('Initializes cache one time', function() { + const cache = vegbilder.cache(); + expect(cache).to.have.property('wfslayers'); + expect(cache).to.have.property('rtree'); + expect(cache).to.have.property('sequences'); + + vegbilder.init(); + const cache2 = vegbilder.cache(); + expect(cache).to.equal(cache2); + }); + }); + + describe('#reset', function() { + it('resets cache', function() { + vegbilder.cache().foo = 'bar'; + vegbilder.reset(); + expect(vegbilder.cache()).to.not.have.property('foo'); + }); + }); +}); diff --git a/test/spec/spec_helpers.js b/test/spec/spec_helpers.js index bb5626822..56929a0a7 100644 --- a/test/spec/spec_helpers.js +++ b/test/spec/spec_helpers.js @@ -137,5 +137,48 @@ const capabilities = ` fetchMock.sticky('https://www.openstreetmap.org/api/capabilities', capabilities, {sticky: true}); fetchMock.sticky('http://www.openstreetmap.org/api/capabilities', capabilities, {sticky: true}); +const vegbilderOwsCapabilities = ` + + + Mock OGC + WFS + 2.0.0 + + + + vegbilder_1_0:Vegbilder_2020 + Vegbilder_2020 + Testlayer + urn:ogc:def:crs:EPSG::4326 + urn:ogc:def:crs:EPSG::3857 + + + not_matched_layer:Vegbilder_2020 + Vegbilder_2020_4 + Not matched layer + urn:ogc:def:crs:EPSG::4326 + urn:ogc:def:crs:EPSG::3857 + + + +`; + +fetchMock.sticky({ + url: 'https://www.vegvesen.no/kart/ogc/vegbilder_1_0/ows', + query: { + service: 'WFS', + request: 'GetCapabilities' + } + }, vegbilderOwsCapabilities, {sticky: true}); fetchMock.config.fallbackToNetwork = true; fetchMock.config.overwriteRoutes = false; diff --git a/test/spec/svg/layers.js b/test/spec/svg/layers.js index 2c54936d7..d92f96ffa 100644 --- a/test/spec/svg/layers.js +++ b/test/spec/svg/layers.js @@ -26,7 +26,7 @@ describe('iD.svgLayers', function () { it('creates default data layers', function () { container.call(iD.svgLayers(projection, context)); var nodes = container.selectAll('svg .data-layer').nodes(); - expect(nodes.length).to.eql(15); + expect(nodes.length).to.eql(16); expect(d3.select(nodes[0]).classed('osm')).to.be.true; expect(d3.select(nodes[1]).classed('notes')).to.be.true; expect(d3.select(nodes[2]).classed('data')).to.be.true; @@ -39,9 +39,10 @@ describe('iD.svgLayers', function () { expect(d3.select(nodes[9]).classed('mapillary-map-features')).to.be.true; expect(d3.select(nodes[10]).classed('mapillary-signs')).to.be.true; expect(d3.select(nodes[11]).classed('kartaview')).to.be.true; - expect(d3.select(nodes[12]).classed('debug')).to.be.true; - expect(d3.select(nodes[13]).classed('geolocate')).to.be.true; - expect(d3.select(nodes[14]).classed('touch')).to.be.true; + expect(d3.select(nodes[12]).classed('vegbilder')).to.be.true; + expect(d3.select(nodes[13]).classed('debug')).to.be.true; + expect(d3.select(nodes[14]).classed('geolocate')).to.be.true; + expect(d3.select(nodes[15]).classed('touch')).to.be.true; }); });