From de9d681b2fab4a8a07fdcfca11d3e8d6eaa5badf Mon Sep 17 00:00:00 2001 From: Matt Walker Date: Thu, 7 Jan 2021 08:45:20 +0000 Subject: [PATCH 1/3] Fix WFS 2.0.0 writeFilter * Add a test for WFS 2.0.0 filter encoding * Use getFilterNS to ensure correct NS for filter child node --- src/ol/format/WFS.js | 2 +- test/spec/ol/format/wfs.test.js | 53 +++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/ol/format/WFS.js b/src/ol/format/WFS.js index f30390fa21..80c20da2aa 100644 --- a/src/ol/format/WFS.js +++ b/src/ol/format/WFS.js @@ -1328,7 +1328,7 @@ function writeTimeInstant(node, time) { * @api */ export function writeFilter(filter, version) { - const child = createElementNS(OGCNS[version], 'Filter'); + const child = createElementNS(getFilterNS(version), 'Filter'); const context = { node: child, }; diff --git a/test/spec/ol/format/wfs.test.js b/test/spec/ol/format/wfs.test.js index e2a22cf55e..defc8251db 100644 --- a/test/spec/ol/format/wfs.test.js +++ b/test/spec/ol/format/wfs.test.js @@ -1457,20 +1457,33 @@ describe('ol.format.WFS', function () { }); describe('when writing out a WFS Filter', function () { - it('creates a filter', function () { - const text = - '' + - ' ' + - ' ' + - ' name' + - ' Mississippi*' + - ' ' + - ' ' + - ' waterway' + - ' riverbank' + - ' ' + - ' ' + - ''; + const wfs1Filter = + '' + + ' ' + + ' ' + + ' name' + + ' Mississippi*' + + ' ' + + ' ' + + ' waterway' + + ' riverbank' + + ' ' + + ' ' + + ''; + const wfs2Filter = + '' + + ' ' + + ' ' + + ' name' + + ' Mississippi*' + + ' ' + + ' ' + + ' waterway' + + ' riverbank' + + ' ' + + ' ' + + ''; + it('creates a WFS 1.x.x filter', function () { const serialized = writeFilter( andFilter( likeFilter('name', 'Mississippi*'), @@ -1478,7 +1491,17 @@ describe('ol.format.WFS', function () { ), '1.1.0' ); - expect(serialized).to.xmleql(parse(text)); + expect(serialized).to.xmleql(parse(wfs1Filter)); + }); + it('creates a WFS 2.x.x filter', function () { + const serialized = writeFilter( + andFilter( + likeFilter('name', 'Mississippi*'), + equalToFilter('waterway', 'riverbank') + ), + '2.0.0' + ); + expect(serialized).to.xmleql(parse(wfs2Filter)); }); }); From 28f76ed901f7b7a16a856ae6b2f8eb998893db61 Mon Sep 17 00:00:00 2001 From: Matt Walker Date: Thu, 7 Jan 2021 08:51:11 +0000 Subject: [PATCH 2/3] Make writeFilter version argument optional * Add test for optional version argument to writeFilter * Default to WFS 1.1.0 if no version passed to writeFilter --- src/ol/format/WFS.js | 5 +++-- test/spec/ol/format/wfs.test.js | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ol/format/WFS.js b/src/ol/format/WFS.js index 80c20da2aa..7517a120ac 100644 --- a/src/ol/format/WFS.js +++ b/src/ol/format/WFS.js @@ -1323,11 +1323,12 @@ function writeTimeInstant(node, time) { * Encode filter as WFS `Filter` and return the Node. * * @param {import("./filter/Filter.js").default} filter Filter. - * @param {string} version Version. + * @param {string} opt_version WFS version. If not provided defaults to '1.1.0' * @return {Node} Result. * @api */ -export function writeFilter(filter, version) { +export function writeFilter(filter, opt_version) { + const version = opt_version || '1.1.0'; const child = createElementNS(getFilterNS(version), 'Filter'); const context = { node: child, diff --git a/test/spec/ol/format/wfs.test.js b/test/spec/ol/format/wfs.test.js index defc8251db..02f887571e 100644 --- a/test/spec/ol/format/wfs.test.js +++ b/test/spec/ol/format/wfs.test.js @@ -1493,6 +1493,15 @@ describe('ol.format.WFS', function () { ); expect(serialized).to.xmleql(parse(wfs1Filter)); }); + it('defaults to creating a WFS 1.x.x filter if no version specified', function () { + const serialized = writeFilter( + andFilter( + likeFilter('name', 'Mississippi*'), + equalToFilter('waterway', 'riverbank') + ) + ); + expect(serialized).to.xmleql(parse(wfs1Filter)); + }); it('creates a WFS 2.x.x filter', function () { const serialized = writeFilter( andFilter( From aef876aaf931a40bc13ae3b2894083f925b9e1a7 Mon Sep 17 00:00:00 2001 From: Matt Walker Date: Thu, 7 Jan 2021 09:24:14 +0000 Subject: [PATCH 3/3] Fix prettier errors --- test/spec/ol/format/wfs.test.js | 48 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/test/spec/ol/format/wfs.test.js b/test/spec/ol/format/wfs.test.js index 02f887571e..a208a988f0 100644 --- a/test/spec/ol/format/wfs.test.js +++ b/test/spec/ol/format/wfs.test.js @@ -1458,31 +1458,31 @@ describe('ol.format.WFS', function () { describe('when writing out a WFS Filter', function () { const wfs1Filter = - '' + - ' ' + - ' ' + - ' name' + - ' Mississippi*' + - ' ' + - ' ' + - ' waterway' + - ' riverbank' + - ' ' + - ' ' + - ''; + '' + + ' ' + + ' ' + + ' name' + + ' Mississippi*' + + ' ' + + ' ' + + ' waterway' + + ' riverbank' + + ' ' + + ' ' + + ''; const wfs2Filter = - '' + - ' ' + - ' ' + - ' name' + - ' Mississippi*' + - ' ' + - ' ' + - ' waterway' + - ' riverbank' + - ' ' + - ' ' + - ''; + '' + + ' ' + + ' ' + + ' name' + + ' Mississippi*' + + ' ' + + ' ' + + ' waterway' + + ' riverbank' + + ' ' + + ' ' + + ''; it('creates a WFS 1.x.x filter', function () { const serialized = writeFilter( andFilter(