From affa254b9d9740b8744e1eca10b29478492d18e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 8 Mar 2016 20:06:43 +0100 Subject: [PATCH] Moved and adapted acceptance test for turbo-cartocss integration --- lib/cartodb/controllers/map.js | 2 - test/acceptance/turbo-cartocss-regressions.js | 67 +++++++++ test/acceptance/turbo-cartocss.js | 128 ++++++++++++++++++ ...est_turbo_cartocss_greens_13_4011_3088.png | Bin 0 -> 1710 bytes .../test_turbo_cartocss_reds_13_4011_3088.png | Bin 0 -> 1717 bytes ...es_simple_reduced-turbo-cartocss-2.2.1.png | Bin 0 -> 53192 bytes test/support/prepare_db.sh | 2 +- test/support/test-client.js | 6 +- 8 files changed, 199 insertions(+), 6 deletions(-) create mode 100644 test/acceptance/turbo-cartocss-regressions.js create mode 100644 test/acceptance/turbo-cartocss.js create mode 100644 test/fixtures/test_turbo_cartocss_greens_13_4011_3088.png create mode 100644 test/fixtures/test_turbo_cartocss_reds_13_4011_3088.png create mode 100644 test/fixtures/torque/populated_places_simple_reduced-turbo-cartocss-2.2.1.png diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 0e48c806..54d018f1 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -281,8 +281,6 @@ MapController.prototype.instantiateTemplate = function(req, res, prepareParamsFn res.set('X-Layergroup-Id', layergroup.layergroupid); self.surrogateKeysCache.tag(res, new NamedMapsCacheEntry(cdbuser, mapConfigProvider.getTemplateName())); - console.log(layergroup); - self.send(req, res, layergroup, 200); } } diff --git a/test/acceptance/turbo-cartocss-regressions.js b/test/acceptance/turbo-cartocss-regressions.js new file mode 100644 index 00000000..c429645b --- /dev/null +++ b/test/acceptance/turbo-cartocss-regressions.js @@ -0,0 +1,67 @@ +require('../support/test_helper'); + +var assert = require('../support/assert'); +var TestClient = require('../support/test-client'); + +function makeMapconfig(cartocss) { + return { + "version": "1.4.0", + "layers": [ + { + "type": 'mapnik', + "options": { + "cartocss_version": '2.3.0', + "sql": [ + 'SELECT test_table.*, _prices.price FROM test_table JOIN (' + + ' SELECT 1 AS cartodb_id, 10.00 AS price', + ' UNION', + ' SELECT 2, 10.50', + ' UNION', + ' SELECT 3, 11.00', + ' UNION', + ' SELECT 4, 12.00', + ' UNION', + ' SELECT 5, 21.00', + ') _prices ON _prices.cartodb_id = test_table.cartodb_id' + ].join('\n'), + "cartocss": cartocss + } + } + ] + }; +} + +describe.skip('turbo-cartocss regressions', function() { + + it('should accept // comments', function(done) { + var cartocss = [ + "/** simple visualization */", + "", + "Map {", + " buffer-size: 256;", + "}", + "", + "#county_points_with_population{", + " marker-fill-opacity: 0.1;", + " marker-line-color:#FFFFFF;//#CF1C90;", + " marker-line-width: 0;", + " marker-line-opacity: 0.3;", + " marker-placement: point;", + " marker-type: ellipse;", + " //marker-comp-op: overlay;", + " marker-width: [price];", + " [zoom=5]{marker-width: [price]*2;}", + " [zoom=6]{marker-width: [price]*4;}", + " marker-fill: #000000;", + " marker-allow-overlap: true;", + " ", + "", + "}" + ].join('\n'); + var testClient = new TestClient(makeMapconfig(cartocss)); + testClient.createLayergroup(function(err) { + assert.ok(!err, err); + done(); + }); + }); +}); diff --git a/test/acceptance/turbo-cartocss.js b/test/acceptance/turbo-cartocss.js new file mode 100644 index 00000000..ae2de717 --- /dev/null +++ b/test/acceptance/turbo-cartocss.js @@ -0,0 +1,128 @@ +var assert = require('../support/assert'); +var TestClient = require('../support/test-client'); + +var IMAGE_TOLERANCE_PER_MIL = 20; + +function imageCompareFn(fixture, done) { + return function(err, res, image) { + assert.ok(!err, err); + assert.imageIsSimilarToFile(image, './test/fixtures/' + fixture, IMAGE_TOLERANCE_PER_MIL, done); + }; +} + +function makeMapconfig(cartocss) { + return { + "version": "1.4.0", + "layers": [ + { + "type": 'mapnik', + "options": { + "cartocss_version": '2.3.0', + "sql": [ + 'SELECT test_table.*, _prices.price FROM test_table JOIN (' + + ' SELECT 1 AS cartodb_id, 10.00 AS price', + ' UNION', + ' SELECT 2, 10.50', + ' UNION', + ' SELECT 3, 11.00', + ' UNION', + ' SELECT 4, 12.00', + ' UNION', + ' SELECT 5, 21.00', + ') _prices ON _prices.cartodb_id = test_table.cartodb_id' + ].join('\n'), + "cartocss": cartocss + } + } + ] + }; +} + +describe('turbo-cartocss', function() { + describe('parsing ramp function with colorbrewer for greens and mapnik renderer', function () { + beforeEach(function () { + var turboCartocss = '#layer { marker-fill: ramp([price], colorbrewer(Greens)); }'; + this.testClient = new TestClient(makeMapconfig(turboCartocss)); + }); + + afterEach(function (done) { + this.testClient.drain(done); + }); + + it('should get a tile with turbo-cartocss parsed properly', function (done) { + var fixturePath = 'test_turbo_cartocss_greens_13_4011_3088.png'; + this.testClient.getTile(13, 4011, 3088, imageCompareFn(fixturePath, done)); + }); + }); + + describe('parsing ramp function with colorbrewer for reds and mapnik renderer', function () { + beforeEach(function () { + var turboCartocss = '#layer { marker-fill: ramp([price], colorbrewer(Reds)); }'; + this.testClient = new TestClient(makeMapconfig(turboCartocss)); + }); + + afterEach(function (done) { + this.testClient.drain(done); + }); + + it('should get a tile with turbo-cartocss parsed properly', function (done) { + var fixtureFileName = 'test_turbo_cartocss_reds_13_4011_3088.png'; + this.testClient.getTile(13, 4011, 3088, imageCompareFn(fixtureFileName, done)); + }); + }); + + describe('parsing ramp function with colorbrewer for greens and toque renderer', function () { + var mapConfig = { + version: '1.2.0', + layers: [ + { + type: 'torque', + options: { + sql: "SELECT * FROM populated_places_simple_reduced where the_geom" + + " && ST_MakeEnvelope(-90, 0, 90, 65)", + cartocss: [ + 'Map {', + ' buffer-size:0;', + ' -torque-frame-count:1;', + ' -torque-animation-duration:30;', + ' -torque-time-attribute:"cartodb_id";', + ' -torque-aggregation-function:"count(cartodb_id)";', + ' -torque-resolution:1;', + ' -torque-data-aggregation:linear;', + '};', + '#populated_places_simple_reduced {', + ' comp-op: multiply;', + ' marker-fill-opacity: 1;', + ' marker-line-color: #FFF;', + ' marker-line-width: 0;', + ' marker-line-opacity: 1;', + ' marker-type: rectangle;', + ' marker-width: 3;', + ' marker-fill: ramp([pop_max], colorbrewer(Greens));', + '};' + ].join(' '), + cartocss_version: '2.3.0' + } + } + ] + }; + + beforeEach(function () { + this.testClient = new TestClient(mapConfig); + }); + + afterEach(function (done) { + this.testClient.drain(done); + }); + + it('should get a tile with turbo-cartocss parsed properly', function (done) { + var z = 2; + var x = 2; + var y = 1; + + var pngFixture = 'torque/populated_places_simple_reduced-turbo-cartocss-' + [z, x, y].join('.') + '.png'; + + this.testClient.getTile(z, x, y, { layers: 0, format: 'torque.png' }, imageCompareFn(pngFixture, done)); + }); + }); +}); diff --git a/test/fixtures/test_turbo_cartocss_greens_13_4011_3088.png b/test/fixtures/test_turbo_cartocss_greens_13_4011_3088.png new file mode 100644 index 0000000000000000000000000000000000000000..062352d241c00380f6b3b5e9818485ed0bfe1c74 GIT binary patch literal 1710 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/torque/populated_places_simple_reduced-turbo-cartocss-2.2.1.png b/test/fixtures/torque/populated_places_simple_reduced-turbo-cartocss-2.2.1.png new file mode 100644 index 0000000000000000000000000000000000000000..59f0d5c1d6ccf37772d4717312f4e43ce7126dff GIT binary patch literal 53192 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 literal 0 HcmV?d00001 diff --git a/test/support/prepare_db.sh b/test/support/prepare_db.sh index f573e819..f03d52de 100755 --- a/test/support/prepare_db.sh +++ b/test/support/prepare_db.sh @@ -80,7 +80,7 @@ if test x"$PREPARE_PGSQL" = xyes; then cat sql/_CDB_QueryStatements.sql | psql -v ON_ERROR_STOP=1 ${TEST_DB} || exit 1 - SQL_SCRIPTS='CDB_QueryTables CDB_CartodbfyTable CDB_TableMetadata CDB_ForeignTable CDB_UserTables CDB_ColumnNames CDB_ZoomFromScale CDB_Overviews' + SQL_SCRIPTS='CDB_QueryTables CDB_CartodbfyTable CDB_TableMetadata CDB_ForeignTable CDB_UserTables CDB_ColumnNames CDB_ZoomFromScale CDB_Overviews CDB_QuantileBins CDB_JenksBins CDB_HeadsTailsBins CDB_EqualIntervalBins' for i in ${SQL_SCRIPTS} do curl -L -s https://github.com/CartoDB/cartodb-postgresql/raw/master/scripts-available/$i.sql -o sql/$i.sql diff --git a/test/support/test-client.js b/test/support/test-client.js index 1a29f564..02128e36 100644 --- a/test/support/test-client.js +++ b/test/support/test-client.js @@ -168,7 +168,8 @@ TestClient.prototype.getTile = function(z, x, y, params, callback) { url = '/api/v1/map/' + layergroupId + '/'; var layers = params.layers; - if (!!layers) { + + if (layers !== undefined) { layers = Array.isArray(layers) ? layers : [layers]; url += layers.join(',') + '/'; } @@ -190,7 +191,6 @@ TestClient.prototype.getTile = function(z, x, y, params, callback) { } }; - var expectedResponse = { status: 200, headers: { @@ -198,7 +198,7 @@ TestClient.prototype.getTile = function(z, x, y, params, callback) { } }; - var isPng = format === 'png'; + var isPng = format === 'png' || format === 'torque.png'; if (isPng) { request.encoding = 'binary';