2018-10-24 00:39:02 +08:00
|
|
|
'use strict';
|
|
|
|
|
2016-05-13 18:10:05 +08:00
|
|
|
require('../../support/test_helper');
|
|
|
|
|
|
|
|
var assert = require('../../support/assert');
|
|
|
|
var TestClient = require('../../support/test-client');
|
|
|
|
|
|
|
|
function makeMapconfig(markerWidth, markerFill) {
|
|
|
|
return {
|
|
|
|
"version": "1.4.0",
|
|
|
|
"layers": [
|
|
|
|
{
|
|
|
|
"type": 'mapnik',
|
|
|
|
"options": {
|
|
|
|
"cartocss_version": '2.3.0',
|
|
|
|
"sql": 'SELECT * FROM populated_places_simple_reduced',
|
|
|
|
"cartocss": createCartocss(markerWidth, markerFill)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
function createCartocss(markerWidth, markerFill) {
|
|
|
|
return [
|
|
|
|
"#populated_places_simple_reduced {",
|
|
|
|
" marker-fill-opacity: 0.9;",
|
|
|
|
" marker-line-color: #FFF;",
|
|
|
|
" marker-line-width: 1;",
|
|
|
|
" marker-line-opacity: 1;",
|
|
|
|
" marker-placement: point;",
|
|
|
|
" marker-type: ellipse;",
|
|
|
|
" marker-allow-overlap: true;",
|
|
|
|
" marker-width: " + (markerWidth || '10') + ";",
|
|
|
|
" marker-fill: " + (markerFill || 'red') + ";",
|
|
|
|
"}"
|
|
|
|
].join('\n');
|
|
|
|
}
|
|
|
|
|
|
|
|
var ERROR_RESPONSE = {
|
|
|
|
status: 400,
|
|
|
|
headers: {
|
|
|
|
'Content-Type': 'application/json; charset=utf-8'
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
describe('turbo-carto error cases', function() {
|
|
|
|
afterEach(function (done) {
|
|
|
|
if (this.testClient) {
|
|
|
|
this.testClient.drain(done);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return invalid number of ramp error', function(done) {
|
2016-07-18 17:13:01 +08:00
|
|
|
this.testClient = new TestClient(makeMapconfig('ramp([pop_max], 8, 96, 3, (8,24,96,128))'));
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-05-13 18:10:05 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors.length, 1);
|
2016-07-18 17:13:37 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/^Failed\sto\sprocess/), layergroup.errors[0]);
|
|
|
|
assert.ok(layergroup.errors[0].match(/invalid\sramp\slength/i), layergroup.errors[0]);
|
2016-05-13 18:10:05 +08:00
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return invalid column from datasource', function(done) {
|
|
|
|
this.testClient = new TestClient(makeMapconfig(null, 'ramp([wadus_column], (red, green, blue))'));
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-05-13 18:10:05 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors.length, 1);
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/^Failed\sto\sprocess/));
|
2016-05-13 18:42:18 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/unable\sto\scompute\sramp/i));
|
2016-05-13 18:10:05 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/wadus_column/));
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2016-05-19 21:54:58 +08:00
|
|
|
it('should return invalid method from datasource', function(done) {
|
|
|
|
this.testClient = new TestClient(makeMapconfig(null, 'ramp([wadus_column], (red, green, blue), wadusmethod)'));
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-05-19 21:54:58 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors.length, 1);
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/^Failed\sto\sprocess/));
|
2016-05-19 21:54:58 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/unable\sto\scompute\sramp/i));
|
|
|
|
assert.ok(layergroup.errors[0].match(/invalid\smethod\s\"wadusmethod\"/i));
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2016-05-13 18:10:05 +08:00
|
|
|
it('should fail by falling back to normal carto parser', function(done) {
|
|
|
|
this.testClient = new TestClient(makeMapconfig('ramp([price], (8,24,96), (8,24,96));//(red, green, blue))'));
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-05-13 18:10:05 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors.length, 1);
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(!layergroup.errors[0].match(/^Failed\sto\sprocess/));
|
2016-05-13 18:10:05 +08:00
|
|
|
assert.ok(layergroup.errors[0].match(/invalid\scode/i));
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2016-06-13 18:20:56 +08:00
|
|
|
|
|
|
|
it('turbo-carto: should return error invalid column from datasource with some context', function(done) {
|
|
|
|
this.testClient = new TestClient(makeMapconfig(null, 'ramp([wadus_column], (red, green, blue))'));
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-06-13 18:20:56 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors_with_context.length, 1);
|
2016-06-27 00:43:04 +08:00
|
|
|
assert.equal(layergroup.errors_with_context[0].type, 'layer');
|
2016-06-29 18:21:15 +08:00
|
|
|
assert.equal(layergroup.errors_with_context[0].subtype, 'turbo-carto');
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/^Failed\sto\sprocess/));
|
2016-06-13 18:20:56 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/unable\sto\scompute\sramp/i));
|
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/wadus_column/));
|
|
|
|
|
2016-06-29 18:21:15 +08:00
|
|
|
assert.equal(layergroup.errors_with_context[0].layer.id, 'layer0');
|
2016-06-27 00:43:04 +08:00
|
|
|
assert.equal(layergroup.errors_with_context[0].layer.index, 0);
|
|
|
|
assert.equal(layergroup.errors_with_context[0].layer.type, 'mapnik');
|
2016-06-13 18:20:56 +08:00
|
|
|
|
2016-06-27 00:43:04 +08:00
|
|
|
assert.equal(layergroup.errors_with_context[0].layer.context.selector, '#populated_places_simple_reduced');
|
|
|
|
assert.deepEqual(layergroup.errors_with_context[0].layer.context.source, {
|
2016-06-13 22:14:01 +08:00
|
|
|
start: {
|
|
|
|
line: 10,
|
|
|
|
column: 3
|
|
|
|
},
|
|
|
|
end: {
|
|
|
|
line: 10,
|
|
|
|
column: 56
|
|
|
|
}
|
|
|
|
});
|
2016-06-13 18:20:56 +08:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2016-07-06 06:32:30 +08:00
|
|
|
|
|
|
|
it('should return multiple errors', function(done) {
|
|
|
|
|
|
|
|
var multipleErrorsMapConfig = {
|
|
|
|
"version": "1.4.0",
|
|
|
|
"layers": [
|
|
|
|
{
|
|
|
|
"type": 'mapnik',
|
|
|
|
"options": {
|
|
|
|
"cartocss_version": '2.3.0',
|
|
|
|
"sql": 'SELECT * FROM populated_places_simple_reduced',
|
|
|
|
"cartocss": createCartocss(null, 'ramp([wadus_column], (red, green, blue))')
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"type": 'mapnik',
|
|
|
|
"options": {
|
|
|
|
"cartocss_version": '2.3.0',
|
|
|
|
"sql": 'SELECT * FROM populated_places_simple_reduced',
|
|
|
|
"cartocss": createCartocss('ramp([invalid_column], (red, green, blue))')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
|
|
|
|
this.testClient = new TestClient(multipleErrorsMapConfig);
|
2017-12-05 19:09:31 +08:00
|
|
|
this.testClient.getLayergroup({ response: ERROR_RESPONSE }, function(err, layergroup) {
|
2016-07-06 06:32:30 +08:00
|
|
|
assert.ok(!err, err);
|
|
|
|
|
|
|
|
assert.ok(layergroup.hasOwnProperty('errors'));
|
|
|
|
assert.equal(layergroup.errors_with_context.length, 2);
|
|
|
|
|
|
|
|
assert.equal(layergroup.errors_with_context[0].type, 'layer');
|
|
|
|
assert.equal(layergroup.errors_with_context[0].subtype, 'turbo-carto');
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/^Failed\sto\sprocess/));
|
2016-07-06 06:32:30 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/unable\sto\scompute\sramp/i));
|
|
|
|
assert.ok(layergroup.errors_with_context[0].message.match(/wadus_column/));
|
|
|
|
assert.equal(layergroup.errors_with_context[0].layer.id, 'layer0');
|
|
|
|
|
|
|
|
assert.equal(layergroup.errors_with_context[1].type, 'layer');
|
|
|
|
assert.equal(layergroup.errors_with_context[1].subtype, 'turbo-carto');
|
2016-07-06 18:34:09 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[1].message.match(/^Failed\sto\sprocess/));
|
2016-07-06 06:32:30 +08:00
|
|
|
assert.ok(layergroup.errors_with_context[1].message.match(/unable\sto\scompute\sramp/i));
|
|
|
|
assert.ok(layergroup.errors_with_context[1].message.match(/invalid_column/));
|
|
|
|
assert.equal(layergroup.errors_with_context[1].layer.id, 'layer1');
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2016-05-13 18:10:05 +08:00
|
|
|
});
|