import WMSGetFeatureInfo from '../../../../../src/ol/format/WMSGetFeatureInfo.js'; import {addCommon, clearAllProjections} from '../../../../../src/ol/proj.js'; import {register} from '../../../../../src/ol/proj/proj4.js'; describe('ol.format.WMSGetFeatureInfo', function () { describe('#getLayers', function () { it('returns null if layers is undefined', function () { const format = new WMSGetFeatureInfo(); expect(format.getLayers()).to.be(null); }); it('returns the value provided in the layers option', function () { const format = new WMSGetFeatureInfo({ layers: ['a', 'z'], }); expect(format.getLayers()).to.eql(['a', 'z']); }); }); describe('#readFormat', function () { describe('read Features', function () { let features; before(function (done) { proj4.defs('urn:x-ogc:def:crs:EPSG:4326', proj4.defs('EPSG:4326')); register(proj4); afterLoadText('spec/ol/format/wms/getfeatureinfo.xml', function (data) { try { features = new WMSGetFeatureInfo().readFeatures(data); } catch (e) { done(e); } done(); }); }); after(function () { delete proj4.defs['urn:x-ogc:def:crs:EPSG:4326']; clearAllProjections(); addCommon(); }); it('creates 3 features', function () { expect(features).to.have.length(3); }); it('creates a feature for 1071', function () { const feature = features[0]; expect(feature.getId()).to.be(undefined); expect(feature.get('FID')).to.equal('1071'); expect(feature.get('NO_CAMPAGNE')).to.equal('1020050'); }); it('read boundedBy but no geometry', function () { const feature = features[0]; expect(feature.getGeometry()).to.be(undefined); expect(feature.get('boundedBy')).to.eql([ -531138.686422, 5386348.414671, -117252.819653, 6144475.186022, ]); }); it('read empty response', function () { // read empty response const text = '' + '' + ' ' + ' ' + ''; const features = new WMSGetFeatureInfo().readFeatures(text); expect(features.length).to.be(0); }); it('read empty attributes', function () { const text = '' + '' + ' ' + ' ' + ' ' + ' ' + ' ' + ' 107397.266000,460681.063000 116568.188000,480609.250000' + ' ' + ' ' + ' ' + ' bar' + ' ' + ' ' + ' ' + ''; const features = new WMSGetFeatureInfo().readFeatures(text); expect(features.length).to.be(1); expect(features[0].get('FOO')).to.be('bar'); // FIXME is that really wanted ? expect(features[0].get('EMPTY')).to.be(undefined); }); it('read features from multiple layers', function () { const text = '' + '' + ' ' + ' ' + ' ' + ' ' + ' ' + ' 129799.109000,467950.250000 133199.906000,468904.063000' + ' ' + ' ' + ' ' + ' 287' + ' N403' + ' #N403' + ' 1' + ' P' + ' 4091.25' + ' <shape>' + ' <null>' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' 129936.000000,468362.000000 131686.000000,473119.000000' + ' ' + ' ' + ' ' + ' 1251' + ' 1515' + ' 00:00:00 01/01/1998' + ' 1472' + ' 1309' + ' D' + ' 227' + ' Vecht' + ' 2' + ' Vecht' + ' 18.25' + ' 23.995' + ' 5745.09' + ' <shape>' + ' <null>' + ' ' + ' ' + ''; const format = new WMSGetFeatureInfo(); const features = format.readFeatures(text); expect(features.length).to.be(2); expect(features[0].get('OBJECTID')).to.be('287'); expect(features[1].get('OBJECTID')).to.be('1251'); format.setLayers(['AAA64']); const aaa64Features = format.readFeatures(text); expect(aaa64Features.length).to.be(1); format.setLayers(['AAA64', 'AAA62']); const allFeatures = format.readFeatures(text); expect(allFeatures.length).to.be(2); format.setLayers(['foo', 'bar']); const dummyFeatures = format.readFeatures(text); expect(dummyFeatures.length).to.be(0); }); it('read geoserver’s response', function () { const text = '' + '' + ' ' + ' ' + ' ' + '591943.9375,4925605 593045.625,4925845' + ' ' + ' ' + ' ' + ' ' + ' ' + ' 3' + ' secondary highway, hard surface' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + '593045.60746465,4925605.0059156 593024.32382915,4925606.79305411' + ' 592907.54863574,4925624.85647524 592687.35111096,' + '4925670.76834012 592430.76279218,4925678.79393165' + ' 592285.97636109,4925715.70811767 592173.39165655,' + '4925761.83511156 592071.1753393,4925793.95523514' + ' 591985.96972625,4925831.59842486' + ' 591943.98769455,4925844.93220071' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ''; const features = new WMSGetFeatureInfo().readFeatures(text); expect(features.length).to.be(1); expect(features[0].get('cat')).to.be('3'); expect(features[0].getGeometry().getType()).to.be('MultiLineString'); }); }); }); });