This commit addresses @bartvde's review comments, adds more documentation, and fixes asynchronous function calls. Previously, when creating multiple processes with the same identifier, the describe callback would only have been called for the first process. This was fixed to move DescribeProcess handling from WPSProcess to WPSClient.
96 lines
3.0 KiB
HTML
96 lines
3.0 KiB
HTML
<html>
|
|
<head>
|
|
<script src="OLLoader.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
var client;
|
|
|
|
function test_initialize(t) {
|
|
t.plan(3);
|
|
|
|
client = new OpenLayers.WPSClient({
|
|
servers: {
|
|
local: "/geoserver/wps"
|
|
}
|
|
});
|
|
|
|
t.ok(client instanceof OpenLayers.WPSClient, 'creates an instance');
|
|
t.ok(client.events, 'has an events instance');
|
|
t.eq(client.servers.local.url, '/geoserver/wps', 'servers stored on instance');
|
|
}
|
|
|
|
function test_getProcess(t) {
|
|
t.plan(4);
|
|
|
|
client = new OpenLayers.WPSClient({
|
|
servers: {
|
|
local: "/geoserver/wps"
|
|
},
|
|
lazy: true
|
|
});
|
|
|
|
var process = client.getProcess('local', 'gs:splitPolygon');
|
|
t.ok(process instanceof OpenLayers.WPSProcess, 'creates a process');
|
|
t.ok(process.client === client, 'process knows about client');
|
|
t.eq(process.server, 'local', 'process created with correct server');
|
|
t.eq(process.identifier, 'gs:splitPolygon', 'process created with correct identifier');
|
|
|
|
}
|
|
|
|
function test_describeProcess(t) {
|
|
t.plan(6);
|
|
var log = {request: [], event: []};
|
|
var originalGET = OpenLayers.Request.GET;
|
|
OpenLayers.Request.GET = function(cfg) {
|
|
log.request.push(cfg);
|
|
}
|
|
function describe(evt) {
|
|
log.event.push(evt);
|
|
}
|
|
client.events.register('describeprocess', this, describe);
|
|
|
|
process = client.getProcess('local', 'gs:splitPolygon');
|
|
t.eq(client.servers.local.processDescription['gs:splitPolyon'], null, 'describeProcess pending');
|
|
process.describe();
|
|
t.eq(log.request.length, 1, 'describeProcess request only sent once');
|
|
log.request[0].success.call(client, {
|
|
responseText: '<?xml version="1.0" encoding="UTF-8"?><wps:ProcessDescriptions xmlns:wps="http://www.opengis.net/wps/1.0.0"></wps:ProcessDescriptions>'
|
|
});
|
|
t.eq(log.event[0].type, 'describeprocess', 'describeprocess event triggered');
|
|
t.ok(client.servers.local.processDescription['gs:splitPolygon'], 'We have a process description!');
|
|
process.describe();
|
|
t.eq(log.request.length, 1, 'describeProcess request only sent once');
|
|
t.eq(log.event.length, 1, 'describeprocess event only triggered once');
|
|
|
|
OpenLayers.Request.GET = originalGET;
|
|
client.events.unregister('describeprocess', this, describe);
|
|
}
|
|
|
|
function test_execute(t) {
|
|
t.plan(1);
|
|
|
|
client = new OpenLayers.WPSClient({
|
|
servers: {
|
|
local: "/geoserver/wps"
|
|
},
|
|
lazy: true
|
|
});
|
|
var log = [];
|
|
client.getProcess = function() {
|
|
return {
|
|
execute: function(options) {
|
|
log.push(options);
|
|
}
|
|
}
|
|
}
|
|
|
|
client.execute({inputs: 'a', success: 'b', scope: 'c'});
|
|
t.eq(log[0], {inputs: 'a', success: 'b', scope: 'c'}, "process executed with correct options");
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|