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

59 lines
2.0 KiB
JavaScript
Raw Normal View History

2016-11-05 17:02:46 +01:00
'use strict';
module.exports = () => {
2016-11-13 15:41:35 +01:00
const _features = [];
2017-12-18 14:31:59 +01:00
const _archive = [];
2016-11-13 15:41:35 +01:00
return {
getFeature: name => {
const toggle = _features.find(f => f.name === name);
if (toggle) {
return Promise.resolve(toggle);
}
return Promise.reject(new Error('could not find toggle'));
},
hasFeature: name => {
const toggle = _features.find(f => f.name === name);
const archived = _archive.find(f => f.name === name);
if (toggle) {
return Promise.resolve({ name, archived: false });
}
if (archived) {
return Promise.resolve({ name, archived: true });
}
return Promise.reject();
},
updateFeature: updatedFeature => {
_features.splice(
_features.indexOf(f => f.name === updatedFeature.name),
1,
);
_features.push(updatedFeature);
},
2016-11-13 15:41:35 +01:00
getFeatures: () => Promise.resolve(_features),
createFeature: feature => _features.push(feature),
2017-12-18 14:31:59 +01:00
getArchivedFeatures: () => Promise.resolve(_archive),
addArchivedFeature: feature => _archive.push(feature),
reviveFeature: feature => {
const revived = _archive.find(f => f.name === feature.name);
_archive.splice(
_archive.indexOf(f => f.name === feature.name),
1,
);
_features.push(revived);
},
lastSeenToggles: (names = []) => {
names.forEach(name => {
const toggle = _features.find(f => f.name === name);
if (toggle) {
toggle.lastSeenAt = new Date();
}
});
},
dropFeatures: () => {
_features.splice(0, _features.length);
_archive.splice(0, _archive.length);
},
importFeature: feat => Promise.resolve(_features.push(feat)),
2016-11-13 15:41:35 +01:00
};
2016-11-05 17:02:46 +01:00
};