diff options
Diffstat (limited to 'misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html')
-rw-r--r-- | misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html | 474 |
1 files changed, 474 insertions, 0 deletions
diff --git a/misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html b/misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html new file mode 100644 index 0000000..0909fb4 --- /dev/null +++ b/misc/openlayers/tests/deprecated/Protocol/SQL/Gears.html @@ -0,0 +1,474 @@ +<html> +<head> + <script src="../../../OLLoader.js"></script> + <script src="../../../../lib/deprecated.js"></script> + <script type="text/javascript"> + + function test_initialize(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(5); + + t.eq(protocol.CLASS_NAME, "OpenLayers.Protocol.SQL.Gears", + "ctor returns correct value"); + + t.eq(protocol.jsonParser.CLASS_NAME, + "OpenLayers.Format.JSON", + "ctor creates a JSON parser"); + + t.eq(protocol.wktParser.CLASS_NAME, + "OpenLayers.Format.WKT", + "ctor creates a WKT parser"); + + var str = protocol.FID_PREFIX + "foo_bar"; + t.ok(str.match(protocol.fidRegExp), + "ctor creates correct regexp"); + + t.ok(typeof protocol.db == "object", + "ctor creates a db object"); + + protocol.clear(); + protocol.destroy(); + } + + function test_destroy(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(3); + + protocol.destroy(); + + t.eq(protocol.db, null, + "destroy nullifies db"); + t.eq(protocol.jsonParser, null, + "destroy nullifies jsonParser"); + t.eq(protocol.wktParser, null, + "destroy nullifies wktParser"); + } + + function test_read(t) { + var protocolCallback, readCallback; + var protocolOptions = {callback: protocolCallback}; + var readOptions = {callback: readCallback}; + + var protocol = new OpenLayers.Protocol.SQL.Gears(protocolOptions); + if (!protocol.supported()) { + t.plan(0); + return; + } + + function okCallback(resp) { + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "read calls correct callback with a response object"); + } + + function failCallback(resp) { + t.fail("read calls incorrect callback"); + } + + t.plan(4); + + var resp; + + // 2 tests + protocolOptions.callback = okCallback; + readOptions.callback = failCallback; + resp = protocol.read(); + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "read returns a response object"); + + // 2 test + protocolOptions.callback = failCallback; + readOptions.callback = okCallback; + resp = protocol.read(readOptions); + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "read returns a response object"); + + protocol.clear(); + protocol.destroy(); + } + + function test_unfreezeFeature(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(10); + + var feature; + var wkt, json, fid, state; + + json = "{\"fake\":\"properties\"}"; + fid = "1000"; + state = OpenLayers.State.INSERT; + + var row = { + fieldByName: function(str) { + if (str == "geometry") { + return wkt; + } + if (str == "properties") { + return json; + } + if (str == "fid") { + return fid; + } + if (str == "state") { + return state; + } + } + }; + + // 5 tests + wkt = "POINT(1 2)"; + feature = protocol.unfreezeFeature(row); + t.eq(feature.CLASS_NAME, "OpenLayers.Feature.Vector", + "unfreezeFeature returns an OpenLayers.Feature.Vector"); + t.ok(feature.geometry.x == 1 && feature.geometry.y == 2, + "unfreezeFeature returns a feature with correct geometry"); + t.eq(feature.attributes.fake, "properties", + "unfreezeFeature returns a feature with correct attributes"); + t.eq(feature.fid, fid, + "unfreezeFeature returns a feature with fid"); + t.eq(feature.state, state, + "unfreezeFeature returns a feature with state"); + + // 5 tests + wkt = protocol.NULL_GEOMETRY; + state = protocol.NULL_FEATURE_STATE; + feature = protocol.unfreezeFeature(row); + t.eq(feature.CLASS_NAME, "OpenLayers.Feature.Vector", + "unfreezeFeature returns an OpenLayers.Feature.Vector"); + t.eq(feature.geometry, null, + "unfreezeFeature returns a feature with correct geometry"); + t.eq(feature.attributes.fake, "properties", + "unfreezeFeature returns a feature with correct attributes"); + t.eq(feature.fid, fid, + "unfreezeFeature returns a feature with fid"); + t.eq(feature.state, null, + "unfreezeFeature returns a feature with state"); + + protocol.clear(); + protocol.destroy(); + } + + function test_extractFidFromField(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(4); + + var field, fid; + + // fid is a string, field is not prefixed with FID_PREFIX + // 1 test + field = "10"; + res = protocol.extractFidFromField(field); + t.eq(res, "10", + "extractFidFromField returns expected string"); + + // fid is a string, field is prefixed with FID_PREFIX + // 1 test + field = protocol.FIX_PREFIX + "10"; + res = protocol.extractFidFromField(field); + t.eq(res, protocol.FIX_PREFIX + "10", + "extractFidFromField returns expected prefixed string"); + + // fid is a number, field is not prefixed with FIX_PREFIX + // 1 test + protocol.typeOfFid = "number"; + field = "10"; + res = protocol.extractFidFromField(field); + t.eq(res, 10, + "extractFidFromField returns expected number"); + + // fid is a number, field is prefixed with FIX_PREFIX + // 1 test + protocol.typeOfFid = "number"; + field = protocol.FID_PREFIX + "10"; + res = protocol.extractFidFromField(field); + t.eq(res, protocol.FID_PREFIX + "10", + "extractFidFromField returns expected prefixed string"); + } + + function test_freezeFeature(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(8); + + var feature, res; + + // 4 tests + feature = new OpenLayers.Feature.Vector(); + feature.geometry = new OpenLayers.Geometry.Point(1, 2); + feature.attributes.fake = "properties"; + feature.fid = "1000"; + feature.state = OpenLayers.State.INSERT; + res = protocol.freezeFeature(feature); + t.eq(res[0], feature.fid, + "freezeFeature returns correct fid"); + t.eq(res[1], "POINT(1 2)", + "freezeFeature returns correct WKT"); + t.eq(res[2], "{\"fake\":\"properties\"}", + "freezeFeature returns correct JSON"); + t.eq(res[3], feature.state, + "freezeFeature returns correct feature state"); + + // 4 tests + protocol.saveFeatureState = false; + feature = new OpenLayers.Feature.Vector(); + feature.attributes.fake = "properties"; + feature.fid = "1000"; + feature.state = OpenLayers.State.INSERT; + res = protocol.freezeFeature(feature); + t.eq(res[0], feature.fid, + "freezeFeature returns correct fid"); + t.eq(res[1], protocol.NULL_GEOMETRY, + "freezeFeature returns expected null geom string"); + t.eq(res[2], "{\"fake\":\"properties\"}", + "freezeFeature returns correct JSON"); + t.eq(res[3], protocol.NULL_FEATURE_STATE, + "freezeFeature returns expected null feature state string"); + + protocol.clear(); + protocol.destroy(); + } + + function test_create(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(8); + + var resp; + var scope = {"fake": "scope"}; + + var options = { + callback: function(resp) { + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "user callback is passed a response"); + t.eq(resp.requestType, "create", + "user callback is passed correct request type in resp"); + t.ok(this == scope, + "user callback called with correct scope"); + }, + scope: scope + }; + + // 4 tests + var feature = new OpenLayers.Feature.Vector(); + feature.fid = "1000"; + feature.attributes.fake = "properties"; + feature.state = OpenLayers.State.INSERT; + resp = protocol.create([feature], options); + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "create returns a response"); + + // check what we have in the DB + // 4 tests + resp = protocol.read({"noFeatureStateReset": true}); + t.eq(resp.features.length, 1, + "create inserts feature in the DB"); + t.eq(resp.features[0].fid, feature.fid, + "create inserts feature with correct fid"); + t.eq(resp.features[0].attributes.fake, feature.attributes.fake, + "create inserts feature with correct attributes"); + t.eq(resp.features[0].state, feature.state, + "create inserts feature with correct state"); + + protocol.clear(); + protocol.destroy(); + } + + function test_createOrUpdate(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(5); + + // 1 test + var feature = new OpenLayers.Feature.Vector(); + feature.fid = "1000"; + feature.attributes.fake = "properties"; + feature.state = OpenLayers.State.INSERT; + resp = protocol.createOrUpdate([feature]); + t.eq(resp.CLASS_NAME, "OpenLayers.Protocol.Response", + "createOrUpdate returns a response"); + + // check what we have in the DB + // 4 tests + resp = protocol.read({"noFeatureStateReset": true}); + t.eq(resp.features.length, 1, + "createOrUpdate inserts feature in the DB"); + t.eq(resp.features[0].fid, feature.fid, + "createOrUpdate inserts feature with correct fid"); + t.eq(resp.features[0].attributes.fake, feature.attributes.fake, + "createOrUpdate inserts feature with correct attributes"); + t.eq(resp.features[0].state, feature.state, + "createOrUpdate inserts feature with correct state"); + + protocol.clear(); + protocol.destroy(); + } + + function test_delete(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(4); + + function createOneAndDeleteOne(fid, deleteOptions) { + var feature = new OpenLayers.Feature.Vector(); + feature.fid = fid; + feature.attributes.fake = "properties"; + feature.state = OpenLayers.State.INSERT; + var r = protocol.create([feature]); + protocol["delete"](r.reqFeatures, deleteOptions); + } + + var resp, fid; + + // 1 test + fid = 1000; + protocol.saveFeatureState = false; + createOneAndDeleteOne(fid) + resp = protocol.read(); + t.eq(resp.features.length, 0, + "delete deletes feature if saveFeatureState is false"); + protocol.clear(); + + // 1 test + fid = 1000; + protocol.saveFeatureState = true; + createOneAndDeleteOne(fid); + resp = protocol.read(); + t.eq(resp.features.length, 1, + "delete does not delete feature if saveFeatureState is true"); + protocol.clear(); + + // 1 test + fid = "1000"; + protocol.saveFeatureState = true; + createOneAndDeleteOne(fid); + resp = protocol.read(); + t.eq(resp.features.length, 1, + "delete does not delete feature if saveFeatureState is true"); + protocol.clear(); + + // 1 test + fid = protocol.FID_PREFIX + "1000"; + protocol.saveFeatureState = true; + createOneAndDeleteOne(fid, {dontDelete: true}); + resp = protocol.read(); + t.eq(resp.features.length, 0, + "delete deletes feature if saveFeatureState is true and fid is prefixed"); + protocol.clear(); + + protocol.destroy(); + } + + function test_callUserCallback(t) { + var protocol = new OpenLayers.Protocol.SQL.Gears(); + if (!protocol.supported()) { + t.plan(0); + return; + } + + t.plan(6); + + var options, resp; + var scope = {'fake': 'scope'}; + + // test commit callback + // 1 tests + options = { + 'callback': function() { + t.ok(this == scope, 'callback called with correct scope'); + }, + 'scope': scope + }; + resp = {'requestType': 'create', 'last': true}; + protocol.callUserCallback(options, resp); + // 0 test + resp = {'requestType': 'create', 'last': false}; + protocol.callUserCallback(options, resp); + + // test create callback + // 2 tests + options = { + 'create': { + 'callback': function(r) { + t.ok(this == scope, 'callback called with correct scope'); + t.ok(r == resp, 'callback called with correct response'); + }, + 'scope': scope + } + }; + resp = {'requestType': 'create'}; + protocol.callUserCallback(options, resp); + + // test with both callbacks set + // 3 tests + options = { + 'create': { + 'callback': function(r) { + t.ok(this == scope, 'callback called with correct scope'); + t.ok(r == resp, 'callback called with correct response'); + }, + 'scope': scope + }, + 'callback': function() { + t.ok(this == scope, 'callback called with correct scope'); + }, + 'scope': scope + }; + resp = {'requestType': 'create', 'last': true}; + protocol.callUserCallback(options, resp); + + // no callback set + // 0 test + options = { + 'delete': { + 'callback': function(resp) { + t.fail('callback should not get called'); + } + } + }; + resp = {'requestType': 'create'}; + protocol.callUserCallback(options, resp); + + // cleanup + protocol.destroy(); + } + + </script> +</head> +<body> +</body> +</html> |