This change also adds some type annotations for better type checking, introduces different write options for writing transactions and queries, and provides new writeGetFeature and writeTransaction methods.
123 lines
4.0 KiB
JavaScript
123 lines
4.0 KiB
JavaScript
goog.provide('ol.test.parser.ogc.WFS_v1');
|
|
|
|
describe('ol.parser.ogc.WFS', function() {
|
|
|
|
var parser = new ol.parser.ogc.WFS();
|
|
|
|
describe('reading and writing', function() {
|
|
|
|
it('handles read of FeatureCollection', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/FeatureCollection.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var obj = parser.read(xml);
|
|
expect(obj.features.length).to.equal(1);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('handles writing out GetFeature with a handle', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/GetFeature.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var p = new ol.parser.ogc.WFS_v1_0_0();
|
|
var output = p.writeGetFeature({
|
|
featureNS: 'http://www.openplans.org/topp',
|
|
featureTypes: ['states'],
|
|
featurePrefix: 'topp',
|
|
handle: 'handle_g',
|
|
maxFeatures: 1,
|
|
outputFormat: 'json'
|
|
});
|
|
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('handles writing out Transaction with a handle', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/Transaction.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var p = new ol.parser.ogc.WFS_v1_0_0();
|
|
var output = p.writeTransaction(null, null, null, {handle: 'handle_t'});
|
|
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('handles writing out transactions', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/TransactionMulti.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var parser = new ol.parser.ogc.WFS_v1_0_0();
|
|
|
|
var insertFeature = new ol.Feature({
|
|
the_geom: new ol.geom.MultiPoint([[1, 2]]),
|
|
foo: 'bar',
|
|
nul: null
|
|
});
|
|
var inserts = [insertFeature];
|
|
var updateFeature = new ol.Feature({
|
|
the_geom: new ol.geom.MultiPoint([[1, 2]]),
|
|
foo: 'bar',
|
|
// null value gets Property element with no Value
|
|
nul: null,
|
|
// undefined value means don't create a Property element
|
|
unwritten: undefined
|
|
});
|
|
updateFeature.setId('fid.42');
|
|
var updates = [updateFeature];
|
|
|
|
var deleteFeature = new ol.Feature();
|
|
deleteFeature.setId('fid.37');
|
|
var deletes = [deleteFeature];
|
|
|
|
var output = parser.writeTransaction(inserts, updates, deletes, {
|
|
featureNS: 'http://www.openplans.org/topp',
|
|
featureType: 'states',
|
|
featurePrefix: 'topp'
|
|
});
|
|
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('handles writing out Native', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/Native.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var p = new ol.parser.ogc.WFS_v1_1_0();
|
|
var output = p.writeTransaction(null, null, null, {nativeElements: [{
|
|
vendorId: 'ORACLE',
|
|
safeToIgnore: true,
|
|
value: 'ALTER SESSION ENABLE PARALLEL DML'
|
|
}, {
|
|
vendorId: 'ORACLE',
|
|
safeToIgnore: false,
|
|
value: 'Another native line goes here'
|
|
}]});
|
|
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('handles writing out GetFeature with > 1 typename', function(done) {
|
|
var url = 'spec/ol/parser/ogc/xml/wfs_v1/GetFeatureMultiple.xml';
|
|
afterLoadXml(url, function(xml) {
|
|
var p = new ol.parser.ogc.WFS_v1_0_0();
|
|
var output = p.writeGetFeature({
|
|
featureNS: 'http://www.openplans.org/topp',
|
|
featureTypes: ['states', 'cities'],
|
|
featurePrefix: 'topp'
|
|
});
|
|
expect(goog.dom.xml.loadXml(output)).to.xmleql(xml);
|
|
done();
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
goog.require('goog.dom.xml');
|
|
goog.require('ol.Feature');
|
|
goog.require('ol.geom.MultiPoint');
|
|
goog.require('ol.parser.ogc.WFS');
|
|
goog.require('ol.parser.ogc.WFS_v1_0_0');
|
|
goog.require('ol.parser.ogc.WFS_v1_1_0');
|