1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/test/specHelper.js

108 lines
2.8 KiB
JavaScript
Raw Normal View History

process.env.NODE_ENV = 'test';
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);
function createStrategies() {
return Promise.map([
{
name: "default",
description: "Default on or off Strategy."
},
{
name: "usersWithEmail",
description: "Active for users defined in the comma-separated emails-parameter.",
parametersTemplate: {
emails: "String"
}
}
], function (strategy) { return strategyDb._createStrategy(strategy); });
}
function createFeatures() {
return Promise.map([
{
"name": "featureX",
"description": "the #1 feature",
"enabled": true,
"strategy": "default"
},
{
"name": "featureY",
"description": "soon to be the #1 feature",
"enabled": false,
"strategy": "baz",
"parameters": {
"foo": "bar"
}
},
{
"name": "featureZ",
"description": "terrible feature",
"enabled": true,
"strategy": "baz",
"parameters": {
"foo": "rab"
}
2014-12-17 21:56:27 +01:00
},
{
"name": "featureArchivedX",
"description": "the #1 feature",
"enabled": true,
"archived": true,
"strategy": "default"
},
{
"name": "featureArchivedY",
"description": "soon to be the #1 feature",
"enabled": false,
"archived": true,
"strategy": "baz",
"parameters": {
"foo": "bar"
}
},
{
"name": "featureArchivedZ",
"description": "terrible feature",
"enabled": true,
"archived": true,
"strategy": "baz",
"parameters": {
"foo": "rab"
}
}
], function (feature) { return featureDb._createFeature(feature); });
}
function destroyStrategies() {
return knex('strategies').del();
}
function destroyFeatures() {
return knex('features').del();
}
function resetDatabase() {
return Promise.all([destroyStrategies(), destroyFeatures()]);
}
function setupDatabase() {
return Promise.all([createStrategies(), createFeatures()]);
}
module.exports = {
request: request,
db: {
reset: resetDatabase,
setup: setupDatabase,
resetAndSetup: function () { return resetDatabase().then(setupDatabase); }
}
};