mirror of
https://github.com/Unleash/unleash.git
synced 2025-09-05 17:53:12 +02:00
chore: add new parse function with tests
This commit is contained in:
parent
3cd312f9a9
commit
04ae667a67
@ -1,6 +1,7 @@
|
||||
import {
|
||||
parseEnvVarBoolean,
|
||||
parseEnvVarNumber,
|
||||
parseEnvVarNumberWithBounds,
|
||||
parseEnvVarStrings,
|
||||
} from './parseEnvVar';
|
||||
|
||||
@ -39,3 +40,36 @@ test('parseEnvVarStringList', () => {
|
||||
expect(parseEnvVarStrings('a,b,c', [])).toEqual(['a', 'b', 'c']);
|
||||
expect(parseEnvVarStrings(' a,,,b, c , ,', [])).toEqual(['a', 'b', 'c']);
|
||||
});
|
||||
|
||||
describe('parseEnvVarNumberWithBounds', () => {
|
||||
const parse = parseEnvVarNumberWithBounds;
|
||||
test('works the same as parseEnvVarNumber', () => {
|
||||
expect(parse('', { fallback: 1 })).toEqual(1);
|
||||
expect(parse(' ', { fallback: 1 })).toEqual(1);
|
||||
expect(parse('a', { fallback: 1 })).toEqual(1);
|
||||
expect(parse('1', { fallback: 1 })).toEqual(1);
|
||||
expect(parse('2', { fallback: 1 })).toEqual(2);
|
||||
expect(parse('2e2', { fallback: 1 })).toEqual(2);
|
||||
expect(parse('-1', { fallback: 1 })).toEqual(-1);
|
||||
});
|
||||
|
||||
test('prefers options override over default value if present', () => {
|
||||
expect(parse('', { fallback: 1, optionsOverride: 2 })).toEqual(2);
|
||||
});
|
||||
|
||||
test('accepts 0 as options override', () => {
|
||||
expect(parse('', { fallback: 1, optionsOverride: 0 })).toEqual(0);
|
||||
});
|
||||
|
||||
test('prefers env var over options override', () => {
|
||||
expect(parse('5', { fallback: 1, optionsOverride: 2 })).toEqual(5);
|
||||
});
|
||||
|
||||
test('clamps the number to greater than or equal to the min number if provided', () => {
|
||||
expect(parse('1', { fallback: 0, min: 2 })).toEqual(2);
|
||||
expect(parse('', { fallback: 0, min: 2 })).toEqual(2);
|
||||
expect(parse('', { fallback: 0, optionsOverride: 1, min: 2 })).toEqual(
|
||||
2,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
@ -38,3 +38,22 @@ export function parseEnvVarStrings(
|
||||
|
||||
return defaultVal;
|
||||
}
|
||||
|
||||
type parseEnvVarNumberWithBoundsOptions = {
|
||||
fallback: number;
|
||||
min?: number;
|
||||
optionsOverride?: number;
|
||||
};
|
||||
|
||||
export function parseEnvVarNumberWithBounds(
|
||||
envVar: string | undefined,
|
||||
{ min, fallback, optionsOverride }: parseEnvVarNumberWithBoundsOptions,
|
||||
): number {
|
||||
const parsed = parseEnvVarNumber(envVar, optionsOverride ?? fallback);
|
||||
|
||||
if (min) {
|
||||
return Math.max(min, parsed);
|
||||
}
|
||||
|
||||
return parsed;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user