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
This commit is contained in:
Matt Walker
2021-01-07 08:45:20 +00:00
parent bacf8c076a
commit de9d681b2f
2 changed files with 39 additions and 16 deletions

View File

@@ -1457,20 +1457,33 @@ describe('ol.format.WFS', function () {
});
describe('when writing out a WFS Filter', function () {
it('creates a filter', function () {
const text =
'<Filter xmlns="http://www.opengis.net/ogc">' +
' <And>' +
' <PropertyIsLike wildCard="*" singleChar="." escapeChar="!">' +
' <PropertyName>name</PropertyName>' +
' <Literal>Mississippi*</Literal>' +
' </PropertyIsLike>' +
' <PropertyIsEqualTo>' +
' <PropertyName>waterway</PropertyName>' +
' <Literal>riverbank</Literal>' +
' </PropertyIsEqualTo>' +
' </And>' +
'</Filter>';
const wfs1Filter =
'<Filter xmlns="http://www.opengis.net/ogc">' +
' <And>' +
' <PropertyIsLike wildCard="*" singleChar="." escapeChar="!">' +
' <PropertyName>name</PropertyName>' +
' <Literal>Mississippi*</Literal>' +
' </PropertyIsLike>' +
' <PropertyIsEqualTo>' +
' <PropertyName>waterway</PropertyName>' +
' <Literal>riverbank</Literal>' +
' </PropertyIsEqualTo>' +
' </And>' +
'</Filter>';
const wfs2Filter =
'<Filter xmlns="http://www.opengis.net/fes/2.0">' +
' <And>' +
' <PropertyIsLike wildCard="*" singleChar="." escapeChar="!">' +
' <ValueReference>name</ValueReference>' +
' <Literal>Mississippi*</Literal>' +
' </PropertyIsLike>' +
' <PropertyIsEqualTo>' +
' <ValueReference>waterway</ValueReference>' +
' <Literal>riverbank</Literal>' +
' </PropertyIsEqualTo>' +
' </And>' +
'</Filter>';
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));
});
});