mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Skip API and create test data in the DB directly (since the API is async)
This commit is contained in:
		
							parent
							
								
									642c06f6ba
								
							
						
					
					
						commit
						745de6867d
					
				@ -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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
 | 
			
		||||
@ -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() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user