From f7c528277bacd2c3b323aa6d9fcfb84945871d98 Mon Sep 17 00:00:00 2001 From: Raul Ochoa Date: Thu, 26 May 2016 11:23:19 +0200 Subject: [PATCH] Add tests for generic MapConfig adapter --- lib/cartodb/models/mapconfig/adapter/index.js | 4 +- test/unit/cartodb/mapconfig/adapter.test.js | 76 +++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 test/unit/cartodb/mapconfig/adapter.test.js diff --git a/lib/cartodb/models/mapconfig/adapter/index.js b/lib/cartodb/models/mapconfig/adapter/index.js index bf64e611..70704bea 100644 --- a/lib/cartodb/models/mapconfig/adapter/index.js +++ b/lib/cartodb/models/mapconfig/adapter/index.js @@ -1,7 +1,7 @@ 'use strict'; -function MapConfigAdapter() { - this.adapters = Array.apply(null, arguments); +function MapConfigAdapter(adapters) { + this.adapters = Array.isArray(adapters) ? adapters : Array.apply(null, arguments); } module.exports = MapConfigAdapter; diff --git a/test/unit/cartodb/mapconfig/adapter.test.js b/test/unit/cartodb/mapconfig/adapter.test.js new file mode 100644 index 00000000..872cb3f7 --- /dev/null +++ b/test/unit/cartodb/mapconfig/adapter.test.js @@ -0,0 +1,76 @@ +//require('../../../support/test_helper'); +var assert = require('assert'); + +var MapConfigAdapter = require('../../../../lib/cartodb/models/mapconfig/adapter'); + +describe('MapConfigAdapter', function() { + var user = 'wadus'; + function requestMapConfig() { + return { + val: 0 + }; + } + function params() { + return {}; + } + function context() { + return {}; + } + + function IncValMapConfigAdapter() { + this.getMapConfig = function(user, requestMapConfig, params, context, callback) { + requestMapConfig.val += 1; + return callback(null, requestMapConfig); + }; + } + + function validateMapConfig(adapter, expectedNumAdapters, validatorFn, callback) { + assert.equal(adapter.adapters.length, expectedNumAdapters); + adapter.getMapConfig(user, requestMapConfig(), params(), context(), function(err, mapConfig) { + validatorFn(mapConfig); + return callback(err); + }); + } + + it('works with no adapters', function(done) { + var adapter = new MapConfigAdapter(); + validateMapConfig(adapter, 0, function(mapConfig) { + assert.equal(mapConfig.val, 0); + }, done); + }); + + it('works with no adapters as empty array', function(done) { + var adapter = new MapConfigAdapter([]); + validateMapConfig(adapter, 0, function(mapConfig) { + assert.equal(mapConfig.val, 0); + }, done); + }); + + it('works with basic adapter', function(done) { + var adapter = new MapConfigAdapter(new IncValMapConfigAdapter()); + validateMapConfig(adapter, 1, function(mapConfig) { + assert.equal(mapConfig.val, 1); + }, done); + }); + + it('works with basic adapter as array', function(done) { + var adapter = new MapConfigAdapter([new IncValMapConfigAdapter()]); + validateMapConfig(adapter, 1, function(mapConfig) { + assert.equal(mapConfig.val, 1); + }, done); + }); + + it('works with several adapters', function(done) { + var adapter = new MapConfigAdapter(new IncValMapConfigAdapter(), new IncValMapConfigAdapter()); + validateMapConfig(adapter, 2, function(mapConfig) { + assert.equal(mapConfig.val, 2); + }, done); + }); + + it('works with several adapters as array', function(done) { + var adapter = new MapConfigAdapter([new IncValMapConfigAdapter(), new IncValMapConfigAdapter()]); + validateMapConfig(adapter, 2, function(mapConfig) { + assert.equal(mapConfig.val, 2); + }, done); + }); +});