From 440953b1cd6a81c7e8923edf3bfabd6756ce74ce Mon Sep 17 00:00:00 2001 From: Mario de Frutos Date: Tue, 30 May 2017 10:47:47 +0200 Subject: [PATCH] If we have the stats FF disbabled return empty array instead of null But we keep checking for elements in the returned object because we don't want to include the stats property if the FF is disabled --- lib/cartodb/backends/stats.js | 2 +- lib/cartodb/controllers/map.js | 2 +- .../stats/mapnik_stats_layergroup.js | 27 ++++++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/cartodb/backends/stats.js b/lib/cartodb/backends/stats.js index 20f89a0f..b0385bac 100644 --- a/lib/cartodb/backends/stats.js +++ b/lib/cartodb/backends/stats.js @@ -11,6 +11,6 @@ StatsBackend.prototype.getStats = function(mapConfig, dbConnection, callback) { if (layerStatsEnabled) { layerStats().getStats(mapConfig, dbConnection, callback); } else { - return callback(null, null); + return callback(null, []); } }; diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 3bb72574..282c3145 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -368,7 +368,7 @@ function(req, res, mapconfig, layergroup, analysesResults, callback) { if (err) { return next(err); } - if (layersStats) { + if (layersStats.length > 0) { layergroup.metadata.layers.forEach(function (layer, index) { layer.meta.stats = layersStats[index]; }); diff --git a/test/acceptance/stats/mapnik_stats_layergroup.js b/test/acceptance/stats/mapnik_stats_layergroup.js index 77288d51..cdac7bb1 100644 --- a/test/acceptance/stats/mapnik_stats_layergroup.js +++ b/test/acceptance/stats/mapnik_stats_layergroup.js @@ -5,14 +5,11 @@ var TestClient = require('../../support/test-client'); describe('Create mapnik layergroup', function() { before(function() { - this.layerMetadataConfig = global.environment.enabledFeatures.layerMetadata; this.layerStatsConfig = global.environment.enabledFeatures.layerStats; - global.environment.enabledFeatures.layerMetadata = true; global.environment.enabledFeatures.layerStats = true; }); after(function() { - global.environment.enabledFeatures.layerMetadata = this.layerMetadataConfig; global.environment.enabledFeatures.layerStats = this.layerStatsConfig; }); @@ -255,4 +252,28 @@ describe('Create mapnik layergroup', function() { testClient.drain(done); }); }); + + it('should not include the stats part if the FF is disabled', function(done) { + global.environment.enabledFeatures.layerStats = false; + var testClient = new TestClient({ + version: '1.4.0', + layers: [ + httpLayer, + mapnikLayer1, + httpLayer + ] + }); + + testClient.getLayergroup(function(err, layergroup) { + assert.ok(!err); + assert.equal(layergroup.metadata.layers[0].id, typeLayerId('http', 0)); + assert.equal(layergroup.metadata.layers[0].type, 'http'); + assert.equal(layergroup.metadata.layers[1].id, mapnikBasicLayerId(0)); + assert.equal(layergroup.metadata.layers[1].type, 'mapnik'); + assert.ok(!layergroup.metadata.layers[1].meta.hasOwnProperty('stats')); + assert.equal(layergroup.metadata.layers[2].id, typeLayerId('http', 1)); + assert.equal(layergroup.metadata.layers[2].type, 'http'); + testClient.drain(done); + }); + }); });