mirror of
https://github.com/strapi/strapi.git
synced 2025-11-02 02:44:55 +00:00
Add oneOf env helper for union values
This commit is contained in:
parent
78a155b972
commit
73f6631a92
@ -144,4 +144,27 @@ describe('Env helper', () => {
|
||||
expect(envHelper.date('DATE_VAR')).toEqual(new Date(2010, 1, 21, 12, 34, 12));
|
||||
});
|
||||
});
|
||||
|
||||
describe('env with union cast', () => {
|
||||
test('Throws if expectedValues is not provided', () => {
|
||||
expect(() => envHelper.oneOf('NO_VAR')).toThrow();
|
||||
});
|
||||
|
||||
test('Throws if defaultValue not included in expectedValues', () => {
|
||||
expect(() => envHelper.oneOf('NO_VAR', ['lorem', 'ipsum'], 'test')).toThrow();
|
||||
});
|
||||
|
||||
test('Return undefined if value is missing in expectedValues and no defaultValue', () => {
|
||||
expect(envHelper.oneOf('NO_VAR', ['lorem', 'ipsum'])).toBeUndefined();
|
||||
});
|
||||
|
||||
test('Return defaultValue if value does not exist in expectedValues', () => {
|
||||
expect(envHelper.oneOf('NO_VAR', ['lorem', 'ipsum'], 'ipsum')).toBe('ipsum');
|
||||
});
|
||||
|
||||
test('Return defaultValue if value exists and is missing in expectedValues', () => {
|
||||
process.env.WITH_VAR = 'test';
|
||||
expect(envHelper.oneOf('WITH_VAR', ['lorem', 'ipsum'], 'ipsum')).toBe('ipsum');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -71,6 +71,26 @@ const utils = {
|
||||
const value = process.env[key];
|
||||
return new Date(value);
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets a value from env that matches oneOf provided values
|
||||
* @param {string} key
|
||||
* @param {string[]} expectedValues
|
||||
* @param {string|undefined} defaultValue
|
||||
* @returns {string|undefined}
|
||||
*/
|
||||
oneOf(key, expectedValues, defaultValue) {
|
||||
if (!expectedValues) {
|
||||
throw new Error(`env.oneOf requires expectedValues`);
|
||||
}
|
||||
|
||||
if (defaultValue && !expectedValues.includes(defaultValue)) {
|
||||
throw new Error(`env.oneOf requires defaultValue to be included in expectedValues`);
|
||||
}
|
||||
|
||||
const rawValue = env(key, defaultValue);
|
||||
return expectedValues.includes(rawValue) ? rawValue : defaultValue;
|
||||
},
|
||||
};
|
||||
|
||||
Object.assign(env, utils);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user