src/applications/representative-appoint/mocks/endpoints/feature-toggles/index.js
const { snakeCase } = require('lodash');
// add and remove feature toggles here by name, but generally keep all values as false
// instead use generateFeatureToggles in server.js to set the toggle values
const toggleList = {
appointARepresentativeEnabled: true,
};
const makeAllTogglesTrue = toggles => {
const result = { ...toggles };
Object.keys(result).forEach(key => {
result[key] = true;
});
return result;
};
/**
* Generates feature toggles mock api response object for profile app
*
* @param {*} values - set specific values to true or false
* @param {*} allOn - set all values to true
* @returns
*/
const generateFeatureToggles = (values = toggleList, allOn = false) => {
const toggles = allOn
? makeAllTogglesTrue(toggleList)
: { ...toggleList, ...values };
const togglesCamelCased = Object.entries(toggles).map(([key, value]) => {
return {
name: key,
value,
};
});
const togglesSnakeCased = Object.entries(toggles).map(([key, value]) => {
return {
name: snakeCase(key),
value,
};
});
return {
data: {
type: 'feature_toggles',
features: [...togglesSnakeCased, ...togglesCamelCased],
},
};
};
const generateFeatureTogglesState = (values = toggleList, allOn = false) => {
return {
featureToggles: generateFeatureToggles(values, allOn).data.features.reduce(
(acc, cur) => {
acc[cur.name] = cur.value;
return acc;
},
{ loading: false },
),
};
};
module.exports = { generateFeatureToggles, generateFeatureTogglesState };