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');
});
});
});
});