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 {
|
import {
|
||||||
parseEnvVarBoolean,
|
parseEnvVarBoolean,
|
||||||
parseEnvVarNumber,
|
parseEnvVarNumber,
|
||||||
|
parseEnvVarNumberWithBounds,
|
||||||
parseEnvVarStrings,
|
parseEnvVarStrings,
|
||||||
} from './parseEnvVar';
|
} 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']);
|
||||||
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;
|
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