From 370bb964ab16acbccb8163ce50b4a881062b8dd9 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Tue, 29 Oct 2013 14:13:09 -0600 Subject: [PATCH] Tests for the image wms source --- test/spec/ol/source/imagewmssource.test.js | 118 +++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 test/spec/ol/source/imagewmssource.test.js diff --git a/test/spec/ol/source/imagewmssource.test.js b/test/spec/ol/source/imagewmssource.test.js new file mode 100644 index 0000000000..426a64e148 --- /dev/null +++ b/test/spec/ol/source/imagewmssource.test.js @@ -0,0 +1,118 @@ +goog.provide('ol.test.source.ImageWMS'); + +describe('ol.source.ImageWMS', function() { + + describe('constructor', function() { + + it('creates a source', function() { + var source = new ol.source.ImageWMS({ + url: 'http://demo.opengeo.org/geoserver/wms', + params: {'LAYERS': 'topp:states'}, + extent: [-13884991, 2870341, -7455066, 6338219] + }); + + expect(source).to.be.a(ol.source.ImageWMS); + expect(source).to.be.a(ol.source.Source); + }); + + }); + + describe('#getFeatureInfoForPixel()', function() { + + var viewport, map, view, source; + beforeEach(function() { + viewport = document.createElement('div'); + var style = viewport.style; + style.position = 'absolute'; + style.left = '-1000px'; + style.width = '360px'; + style.height = '180px'; + document.body.appendChild(viewport); + + source = new ol.source.ImageWMS({ + url: 'http://example.com/', + projection: 'EPSG:4326', + params: {'LAYERS': 'test-layer'} + }); + + view = new ol.View2D({ + projection: 'EPSG:4326', + center: [0, 0] + }); + + map = new ol.Map({ + target: viewport, + layers: [ + new ol.layer.Image({ + source: source + }) + ], + view: view + }); + + sinon.spy(ol.source.wms, 'getFeatureInfo'); + }); + + afterEach(function() { + ol.source.wms.getFeatureInfo.restore(); + document.body.removeChild(viewport); + }); + + it('calls ol.source.wms.getFeatureInfo (resolution 1)', function(done) { + // confirm things look good at resolution: 2 + map.once('postrender', function() { + source.getFeatureInfoForPixel([0, 0], map, function() { + expect(ol.source.wms.getFeatureInfo.calledOnce).to.be(true); + var args = ol.source.wms.getFeatureInfo.getCall(0).args; + + // check url arg + var url = new goog.Uri(args[0]); + var query = url.getQueryData(); + expect(query.containsKey('BBOX')).to.be(true); + expect(query.get('BBOX').split(',')).to.eql([-90, -180, 90, 180]); + + // check pixel arg + var pixel = args[1]; + expect(pixel).to.eql([0, 0]); + + done(); + }); + }); + view.setResolution(1); + }); + + it('calls ol.source.wms.getFeatureInfo (resolution 2)', function(done) { + // confirm things look good at resolution: 2 + map.once('postrender', function() { + source.getFeatureInfoForPixel([10, 20], map, function() { + expect(ol.source.wms.getFeatureInfo.calledOnce).to.be(true); + var args = ol.source.wms.getFeatureInfo.getCall(0).args; + + // check url arg + var url = new goog.Uri(args[0]); + var query = url.getQueryData(); + expect(query.containsKey('BBOX')).to.be(true); + expect(query.get('BBOX').split(',')).to.eql([-180, -360, 180, 360]); + + // check pixel arg + var pixel = args[1]; + expect(pixel).to.eql([10, 20]); + + done(); + }); + + }); + view.setResolution(2); + }); + }); + +}); + +goog.require('goog.Uri'); + +goog.require('ol.Map'); +goog.require('ol.View2D'); +goog.require('ol.layer.Image'); +goog.require('ol.source.ImageWMS'); +goog.require('ol.source.Source'); +goog.require('ol.source.wms');