diff options
Diffstat (limited to 'misc/openlayers/tests/Protocol/WFS.html')
-rw-r--r-- | misc/openlayers/tests/Protocol/WFS.html | 471 |
1 files changed, 0 insertions, 471 deletions
diff --git a/misc/openlayers/tests/Protocol/WFS.html b/misc/openlayers/tests/Protocol/WFS.html deleted file mode 100644 index 24e775d..0000000 --- a/misc/openlayers/tests/Protocol/WFS.html +++ /dev/null @@ -1,471 +0,0 @@ -<html> -<head> - <script src="../OLLoader.js"></script> - <script type="text/javascript"> - - function test_initialize(t) { - t.plan(2); - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type" - }); - t.ok(protocol instanceof OpenLayers.Protocol.WFS.v1_0_0, - "initialize returns instance of default versioned protocol") - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - version: "1.1.0" - }); - t.ok(protocol instanceof OpenLayers.Protocol.WFS.v1_1_0, - "initialize returns instance of custom versioned protocol") - } - - function test_setGeometryName(t) { - t.plan(4); - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - geometryName: "geom" - }); - t.eq(protocol.geometryName, "geom", "geometryName set correctly by constructor"); - t.eq(protocol.format.geometryName, "geom", "geometryName correctly set on format by constructor"); - // change the geometryName on the fly - protocol.setGeometryName("SHAPE"); - t.eq(protocol.geometryName, "SHAPE", "geometryName changed correctly by setGeometryName"); - t.eq(protocol.format.geometryName, "SHAPE", "geometryName correctly changed on format by setGeometryName"); - protocol.destroy(); - } - - function test_setFeatureType(t) { - t.plan(4); - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type" - }); - t.eq(protocol.featureType, "type", "featureType set correctly by constructor"); - t.eq(protocol.format.featureType, "type", "featureType correctly set on format by constructor"); - // change the feature type on the fly - protocol.setFeatureType("foo"); - t.eq(protocol.featureType, "foo", "featureType changed correctly by setFeatureType"); - t.eq(protocol.format.featureType, "foo", "featureType correctly changed on format by setFeatureType"); - protocol.destroy(); - } - - function test_read(t) { - t.plan(7); - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - parseResponse: function(request, options) { - t.eq(request.responseText, "foo", "parseResponse called properly"); - t.eq(options, {foo: "bar"}, "parseResponse receives readOptions"); - return "foo"; - } - }); - - var _POST = OpenLayers.Request.POST; - - var expected, status; - OpenLayers.Request.POST = function(obj) { - t.xml_eq(new OpenLayers.Format.XML().read(obj.data).documentElement, expected, "GetFeature request is correct"); - obj.status = status; - obj.responseText = "foo"; - t.delay_call(0.1, function() {obj.callback.call(this)}); - return obj; - }; - - expected = readXML("GetFeature_1"); - status = 200; - var response = protocol.read({readOptions: {foo: "bar"}, callback: function(response) { - t.eq(response.features, "foo", "user callback properly called with features"); - t.eq(response.code, OpenLayers.Protocol.Response.SUCCESS, "success reported properly"); - }}); - - options = { - maxFeatures: 10, - featureType: 'type2', - srsName: 'EPSG:900913', - featureNS: 'htttp://alternative.namespace.org', - callback: function(response) { - t.eq(response.code, OpenLayers.Protocol.Response.FAILURE, "failure reported properly to user callback"); - } - }; - expected = readXML("GetFeature_2"); - status = 400; - var response = protocol.read(options); - - OpenLayers.Request.POST = _POST; - } - - function test_parseResponse_poorconfig(t) { - t.plan(2); - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featurePrefix: "topp", - featureType: "tasmania_roads", - geometryName: null - }); - - protocol.parseResponse({responseText: document.getElementById("query_response").firstChild.nodeValue}); - t.eq(protocol.geometryName, "geom", "geometryName configured correctly"); - t.eq(protocol.featureNS, "http://www.openplans.org/topp", "featureNS configured correctly"); - } - - function test_exception(t) { - t.plan(8); - var url = "http://some.url.org"; - var protocol = new OpenLayers.Protocol.WFS({ - url: url, - version: "1.1.0", - featureNS: "http://namespace.org", - featureType: "type" - }); - // mock up a response - var response = { - priv: { - status: 200, - responseText: '<?xml version="1.0" encoding="UTF-8"?><ows:ExceptionReport language="en" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows"><ows:Exception locator="foo" exceptionCode="InvalidParameterValue"><ows:ExceptionText>Update error: Error occurred updating features</ows:ExceptionText><ows:ExceptionText>Second exception line</ows:ExceptionText></ows:Exception></ows:ExceptionReport>' - } - }; - var log, entry, expected; - - // test GetFeature - log = []; - protocol.handleRead(OpenLayers.Util.extend({}, response), { - callback: function(resp) { - log.push(resp); - } - }); - expected = { - exceptionReport: { - version: "1.0.0", - language: "en", - exceptions: [{ - code: "InvalidParameterValue", - locator: "foo", - texts: [ - "Update error: Error occurred updating features", - "Second exception line" - ] - }] - }, - success: false - }; - - t.eq(log.length, 1, "GetFeature handled"); - entry = log[0]; - t.eq(entry.code, OpenLayers.Protocol.Response.FAILURE, "GetFeature failure reported"); - t.ok(!!entry.error, "GetFeature got error"); - t.eq(entry.error, expected, "GetFeature error matches expected"); - - // test a commit - log = []; - protocol.handleCommit(response, { - callback: function(resp) { - log.push(resp); - } - }); - t.eq(log.length, 1, "commit handled"); - entry = log[0]; - t.eq(entry.code, OpenLayers.Protocol.Response.FAILURE, "commit failure reported"); - t.ok(!!entry.error, "commit got error"); - t.eq(entry.error, expected, "GetFeature error matches expected"); - - } - - function test_commit(t){ - t.plan(5); - - var url = "http://some.url.org"; - var protocol = new OpenLayers.Protocol.WFS({ - url: url, - featureNS: "http://namespace.org", - featureType: "type" - }); - protocol.format.read = function(data) { - t.eq(data, "foo", "callback called with correct argument"); - return { - insertIds: new Array(3), - success: true - } - }; - - var _POST = OpenLayers.Request.POST; - - var expected; - OpenLayers.Request.POST = function(obj) { - t.xml_eq(new OpenLayers.Format.XML().read(obj.data).documentElement, expected, "Transaction XML with Insert, Update and Delete created correctly"); - t.eq(obj.headers, {foo: 'bar'}, "HTTP headers passed from commit to Request.POST"); - obj.responseText = "foo"; - t.delay_call(0.1, function() {obj.callback.call(this)}); - return obj; - }; - - var featureDelete = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(42, 7), {has : "cheeseburger"}); - featureDelete.fid = "fid.37"; - featureDelete.state = OpenLayers.State.DELETE; - featureDelete.layer = { - projection: { - getCode : function(){ - return "EPSG:4326"; - } - } - } - var featureInsert = featureDelete.clone(); - featureInsert.state = OpenLayers.State.INSERT; - var featureModify = featureDelete.clone(); - featureModify.fid = "fid.37"; - featureModify.state = OpenLayers.State.UPDATE; - - options = { - featureNS: "http://some.namespace.org", - featureType: "type", - headers: {foo: 'bar'}, - callback: function(response) { - t.eq(response.insertIds.length, 3, "correct response passed to user callback"); - t.eq(response.code, OpenLayers.Protocol.Response.SUCCESS, "success properly reported to user callback"); - } - } - - expected = readXML("commit"); - var response = protocol.commit([featureInsert, featureModify, featureDelete], options); - - OpenLayers.Request.POST = _POST; - - } - - function test_filterDelete(t) { - t.plan(2) - - var url = "http://some.url.org"; - var protocol = new OpenLayers.Protocol.WFS({ - url: url, - featureNS: "http://namespace.org", - featureType: "type" - }); - - var filter = new OpenLayers.Filter.Spatial({ - type: OpenLayers.Filter.Spatial.BBOX, - value: new OpenLayers.Bounds(-5, -5, 5, 5) - }); - - var _POST = OpenLayers.Request.POST; - - var expected = readXML("filter_delete"); - OpenLayers.Request.POST = function(obj) { - t.xml_eq(new OpenLayers.Format.XML().read(obj.data).documentElement, expected, "request data correct"); - t.delay_call(0.1, function() {obj.callback.call(this)}); - return obj; - }; - - var response = protocol.filterDelete(filter, { - callback: function() { - t.ok("user callback function called"); - } - }); - - OpenLayers.Request.POST = _POST; - } - - function test_abort(t) { - t.plan(1); - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://example.com", - featureNS: "http://example.com#namespace", - featureType: "type" - }); - - var response = { - priv: { - abort: function() { - aborted = true; - } - } - }; - - // call abort with mocked response - var aborted = false; - protocol.abort(response); - t.eq(aborted, true, "abort called on response.priv"); - - } - - function test_fromWMSLayer(t) { - t.plan(9); - var map = new OpenLayers.Map("map", { - projection: "CRS:84" - }); - var layer = new OpenLayers.Layer.WMS("foo", "htttp://foo/ows", - {layers: "topp:states"} - ); - map.addLayer(layer); - var protocol = OpenLayers.Protocol.WFS.fromWMSLayer(layer); - t.eq(protocol.url, "htttp://foo/ows", "url taken from wms layer"); - t.eq(protocol.featurePrefix, "topp", "feature prefix correctly extracted"); - t.eq(protocol.featureType, "states", "typeName correctly extracted"); - t.eq(protocol.srsName, "CRS:84", "srsName set correctly"); - t.eq(protocol.version, "1.1.0", "version set correctly"); - t.eq(protocol.format.geometryName, null, "format's geometryName set to null"); - - layer.params["LAYERS"] = ["topp:street_centerline", "topp:states"]; - layer.projection = new OpenLayers.Projection("EPSG:900913"); - protocol = OpenLayers.Protocol.WFS.fromWMSLayer(layer); - t.eq(protocol.featurePrefix, "topp", "featurePrefix from layer param array"); - t.eq(protocol.featureType, "street_centerline", "first layer from layer param array as featureType"); - t.eq(protocol.srsName, "EPSG:900913", "projection from layer preferred"); - } - - function test_readFormat(t) { - t.plan(1); - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - formatOptions: {outputFormat: 'json'}, - readFormat: new OpenLayers.Format.GeoJSON() - }); - - var request = {}; - request.responseText = '{"type":"FeatureCollection","features":[{"type":"Feature","id":"V_HECTOPUNTEN.108411","geometry":{"type":"MultiPoint","coordinates":[[190659.467,349576.19]]},"geometry_name":"ORA_GEOMETRY","properties":{"WEGNUMMER":"002","HECTOMTRNG_ORG":2200,"HECTOMTRNG":"220.00","bbox":[190659.467,349576.19,190659.467,349576.19]}}]}'; - var features = protocol.parseResponse(request); - t.eq(features.length, 1, "the right format is used to read the request (GeoJSON)"); - } - - function test_outputFormat(t) { - t.plan(2); - - var protocol = new OpenLayers.Protocol.WFS({ - version: "1.1.0", - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - outputFormat: 'json' - }); - - t.ok(protocol.readFormat instanceof OpenLayers.Format.GeoJSON, "the correct readFormat is used for outputFormat JSON"); - - protocol = new OpenLayers.Protocol.WFS({ - version: "1.1.0", - url: "http://some.url.org", - featureNS: "http://namespace.org", - featureType: "type", - outputFormat: 'GML2' - }); - - t.ok(protocol.readFormat instanceof OpenLayers.Format.GML.v2, "the correct readFormat is used for outputFormat GML2"); - } - - function test_readOptions(t) { - t.plan(1); - - var protocol = new OpenLayers.Protocol.WFS({ - url: "http://some.url.org", - version: "1.1.0", - featureNS: "http://namespace.org", - featureType: "type", - readOptions: {'output': 'object'}, - parseResponse: function(request, options) { - t.eq(options.output, "object", "Options object correctly set to pass on to Format's read"); - } - }); - - var _POST = OpenLayers.Request.POST; - - OpenLayers.Request.POST = function(obj) { - obj.status = 200; - obj.responseText = "foo"; - t.delay_call(0.1, function() {obj.callback.call(this)}); - return obj; - }; - - protocol.read({ - callback: function() {} - }); - - OpenLayers.Request.POST = _POST; - } - - function readXML(id) { - var xml = document.getElementById(id).firstChild.nodeValue; - return new OpenLayers.Format.XML().read(xml).documentElement; - } - - </script> -</head> -<body> -<div id="map" style="width:512px; height:256px"> </div> -<div id="GetFeature_1"><!-- -<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <wfs:Query typeName="feature:type" xmlns:feature="http://namespace.org"/> -</wfs:GetFeature> ---></div> -<div id="GetFeature_2"><!-- -<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0" maxFeatures="10" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <wfs:Query typeName="feature:type2" xmlns:feature="htttp://alternative.namespace.org"/> -</wfs:GetFeature> ---></div> -<div id="commit"><!-- -<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <wfs:Insert> - <feature:type xmlns:feature="http://namespace.org"> - <feature:the_geom> - <gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"> - <gml:coordinates decimal="." cs="," ts=" ">42,7</gml:coordinates> - </gml:Point> - </feature:the_geom> - <feature:has>cheeseburger</feature:has> - </feature:type> - </wfs:Insert> - <wfs:Update typeName="feature:type" xmlns:feature="http://namespace.org"> - <wfs:Property> - <wfs:Name>the_geom</wfs:Name> - <wfs:Value> - <gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"> - <gml:coordinates decimal="." cs="," ts=" ">42,7</gml:coordinates> - </gml:Point> - </wfs:Value> - </wfs:Property> - <wfs:Property> - <wfs:Name>has</wfs:Name> - <wfs:Value>cheeseburger</wfs:Value> - </wfs:Property> - <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> - <ogc:FeatureId fid="fid.37"/> - </ogc:Filter> - </wfs:Update> - <wfs:Delete typeName="feature:type" xmlns:feature="http://namespace.org"> - <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> - <ogc:FeatureId fid="fid.37"/> - </ogc:Filter> - </wfs:Delete> -</wfs:Transaction> ---></div> -<div id="filter_delete"><!-- -<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.0.0"> - <wfs:Delete typeName="feature:type" xmlns:feature="http://namespace.org"> - <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> - <ogc:BBOX> - <gml:Box xmlns:gml="http://www.opengis.net/gml" srsName="EPSG:4326"> - <gml:coordinates decimal="." cs="," ts=" ">-5,-5 5,5</gml:coordinates> - </gml:Box> - </ogc:BBOX> - </ogc:Filter> - </wfs:Delete> -</wfs:Transaction> ---></div> -<div id="query_response"><!-- -<?xml version="1.0" encoding="UTF-8"?> -<wfs:FeatureCollection xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:topp="http://www.openplans.org/topp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink"><gml:boundedBy><gml:Envelope srsDimension="2" srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:lowerCorner>5450000.0 500000.0</gml:lowerCorner><gml:upperCorner>5450000.0 540000.0</gml:upperCorner></gml:Envelope></gml:boundedBy><gml:featureMembers><topp:tasmania_roads gml:id="tasmania_roads.1"><gml:boundedBy><gml:Envelope srsDimension="2" srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:lowerCorner>5450000.0 500000.0</gml:lowerCorner><gml:upperCorner>5450000.0 540000.0</gml:upperCorner></gml:Envelope></gml:boundedBy><topp:geom><gml:MultiLineString srsDimension="2" srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:lineStringMember><gml:LineString><gml:posList>5450000.0 500000.0 5450000.0 540000.0</gml:posList></gml:LineString></gml:lineStringMember></gml:MultiLineString></topp:geom><topp:TYPE>street</topp:TYPE></topp:tasmania_roads></gml:featureMembers></wfs:FeatureCollection> ---></div> -</body> -</html> |