Merge pull request #11890 from walkermatt/wfs_filter_version

Fix WFS writeFilter
This commit is contained in:
Tim Schaub
2021-01-08 17:13:57 -07:00
committed by GitHub
2 changed files with 51 additions and 18 deletions
+4 -3
View File
@@ -1323,12 +1323,13 @@ function writeTimeInstant(node, time) {
* Encode filter as WFS `Filter` and return the Node. * Encode filter as WFS `Filter` and return the Node.
* *
* @param {import("./filter/Filter.js").default} filter Filter. * @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. * @return {Node} Result.
* @api * @api
*/ */
export function writeFilter(filter, version) { export function writeFilter(filter, opt_version) {
const child = createElementNS(OGCNS[version], 'Filter'); const version = opt_version || '1.1.0';
const child = createElementNS(getFilterNS(version), 'Filter');
const context = { const context = {
node: child, node: child,
}; };
+47 -15
View File
@@ -1457,20 +1457,33 @@ describe('ol.format.WFS', function () {
}); });
describe('when writing out a WFS Filter', function () { describe('when writing out a WFS Filter', function () {
it('creates a filter', function () { const wfs1Filter =
const text = '<Filter xmlns="http://www.opengis.net/ogc">' +
'<Filter xmlns="http://www.opengis.net/ogc">' + ' <And>' +
' <And>' + ' <PropertyIsLike wildCard="*" singleChar="." escapeChar="!">' +
' <PropertyIsLike wildCard="*" singleChar="." escapeChar="!">' + ' <PropertyName>name</PropertyName>' +
' <PropertyName>name</PropertyName>' + ' <Literal>Mississippi*</Literal>' +
' <Literal>Mississippi*</Literal>' + ' </PropertyIsLike>' +
' </PropertyIsLike>' + ' <PropertyIsEqualTo>' +
' <PropertyIsEqualTo>' + ' <PropertyName>waterway</PropertyName>' +
' <PropertyName>waterway</PropertyName>' + ' <Literal>riverbank</Literal>' +
' <Literal>riverbank</Literal>' + ' </PropertyIsEqualTo>' +
' </PropertyIsEqualTo>' + ' </And>' +
' </And>' + '</Filter>';
'</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( const serialized = writeFilter(
andFilter( andFilter(
likeFilter('name', 'Mississippi*'), likeFilter('name', 'Mississippi*'),
@@ -1478,7 +1491,26 @@ describe('ol.format.WFS', function () {
), ),
'1.1.0' '1.1.0'
); );
expect(serialized).to.xmleql(parse(text)); 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(
likeFilter('name', 'Mississippi*'),
equalToFilter('waterway', 'riverbank')
),
'2.0.0'
);
expect(serialized).to.xmleql(parse(wfs2Filter));
}); });
}); });