From c67b73b5b36b9789e5f996d1943ba8830bc54c2e Mon Sep 17 00:00:00 2001 From: Jari Bakken Date: Tue, 9 Dec 2014 14:44:25 +0100 Subject: [PATCH] Skip API and create test data in the DB directly (since the API is async) --- lib/featureDb.js | 46 +++++++++++++++++++++++++----------------- lib/strategyDb.js | 26 ++++++++++++++---------- test/featureApiSpec.js | 6 ++---- test/specHelper.js | 26 ++++++++---------------- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/lib/featureDb.js b/lib/featureDb.js index 0c132fa7b4..f1f5334b35 100644 --- a/lib/featureDb.js +++ b/lib/featureDb.js @@ -6,20 +6,11 @@ var NotFoundError = require('./error/NotFoundError'); var FEATURE_COLUMNS = ['name', 'description', 'enabled', 'strategy_name', 'parameters']; eventStore.on(eventType.featureCreated, function (event) { - knex('features') - .insert(eventToRow(event)) - .catch(function (err) { - logger.error('Could not insert feature, error was: ', err); - }); + return createFeature(event.data); }); eventStore.on(eventType.featureUpdated, function (event) { - knex('features') - .where({name: event.data.name}) - .update(eventToRow(event)) - .catch(function (err) { - logger.error('Could not update feature, error was: ', err); - }); + return updateFeature(event.data); }); function getFeatures() { @@ -52,18 +43,37 @@ function rowToFeature(row) { }; } -function eventToRow(event) { +function eventDataToRow(data) { return { - name: event.data.name, - description: event.data.description, - enabled: event.data.enabled ? 1 : 0, - strategy_name: event.data.strategy, // jshint ignore: line - parameters: event.data.parameters + name: data.name, + description: data.description, + enabled: data.enabled ? 1 : 0, + strategy_name: data.strategy, // jshint ignore: line + parameters: data.parameters }; } +function createFeature(data) { + return knex('features') + .insert(eventDataToRow(data)) + .catch(function (err) { + logger.error('Could not insert feature, error was: ', err); + }); +} + +function updateFeature(data) { + return knex('features') + .where({name: data.name}) + .update(eventDataToRow(data)) + .catch(function (err) { + logger.error('Could not update feature, error was: ', err); + }); +} + module.exports = { getFeatures: getFeatures, - getFeature: getFeature + getFeature: getFeature, + _createFeature: createFeature, // visible for testing + _updateFeature: updateFeature // visible for testing }; diff --git a/lib/strategyDb.js b/lib/strategyDb.js index 9c23053f5c..b5c2b4527c 100644 --- a/lib/strategyDb.js +++ b/lib/strategyDb.js @@ -5,11 +5,7 @@ var knex = require('./dbPool'); var STRATEGY_COLUMNS = ['name', 'description', 'parameters_template']; eventStore.on(eventType.strategyCreated, function (event) { - knex('strategies') - .insert(eventToRow(event)) - .catch(function (err) { - logger.error('Could not insert strategy, error was: ', err); - }); + return createStrategy(event.data); }); eventStore.on(eventType.strategyDeleted, function (event) { @@ -45,21 +41,29 @@ function rowToStrategy(row) { return { name: row.name, description: row.description, - enabled: row.enabled > 0, parametersTemplate: row.parameters_template // jshint ignore: line }; } -function eventToRow(event) { +function eventDataToRow(data) { return { - name: event.data.name, - description: event.data.description, - parameters_template: event.data.parametersTemplate // jshint ignore: line + name: data.name, + description: data.description, + parameters_template: data.parametersTemplate // jshint ignore: line }; } +function createStrategy(data) { + knex('strategies') + .insert(eventDataToRow(data)) + .catch(function (err) { + logger.error('Could not insert strategy, error was: ', err); + }); +} + module.exports = { getStrategies: getStrategies, - getStrategy: getStrategy + getStrategy: getStrategy, + _createStrategy: createStrategy // visible for testing }; diff --git a/test/featureApiSpec.js b/test/featureApiSpec.js index 24ebcd4cd0..0dcb887eba 100644 --- a/test/featureApiSpec.js +++ b/test/featureApiSpec.js @@ -5,11 +5,9 @@ var stringify = function (o) { return JSON.stringify(o, null, ' '); }; describe('The features api', function () { beforeEach(function (done) { - var d = function (err) { console.log('done', err); done.bind(null, err)(); }; - specHelper.db.resetAndSetup() - .then(d.bind(null, null)) - .catch(d); + .then(done.bind(null, null)) + .catch(done); }); it('returns three feature toggles', function (done) { diff --git a/test/specHelper.js b/test/specHelper.js index 9905fd80ff..8e937bac0b 100644 --- a/test/specHelper.js +++ b/test/specHelper.js @@ -1,9 +1,11 @@ process.env.NODE_ENV = 'test'; -var Promise = require('bluebird'); -var request = require('supertest'); -var app = require('../app'); -var knex = require('../lib/dbPool'); +var Promise = require('bluebird'); +var request = require('supertest'); +var app = require('../app'); +var knex = require('../lib/dbPool'); +var featureDb = require('../lib/featureDb'); +var strategyDb = require('../lib/strategyDb'); Promise.promisifyAll(request); request = request(app); @@ -21,13 +23,7 @@ function createStrategies() { emails: "String" } } - ], function (strategy) { - return request - .post('/strategies').send(strategy) - .set('Content-Type', 'application/json') - .expect(201) - .endAsync(); - }); + ], function (strategy) { return strategyDb._createStrategy(strategy); }); } function createFeatures() { @@ -56,13 +52,7 @@ function createFeatures() { "foo": "rab" } } - ], function (feature) { - return request - .post('/features').send(feature) - .set('Content-Type', 'application/json') - .expect(201) - .endAsync(); - }); + ], function (feature) { return featureDb._createFeature(feature); }); } function destroyStrategies() {