mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-10 09:53:48 +00:00
Chore: Small todo about coerce boolean (#1789)
* fix: coerce boolean types negative number is false * strict coerce
This commit is contained in:
@@ -145,16 +145,25 @@ describe('coerce unknown value to a boolean', () => {
|
||||
expect(coerceBoolean('')).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test('true numbers', () => {
|
||||
expect(coerceBoolean(1)).toStrictEqual(true);
|
||||
expect(coerceBoolean(2)).toStrictEqual(true);
|
||||
expect(coerceBoolean(100000)).toStrictEqual(true);
|
||||
test('invalid strings', () => {
|
||||
expect(() => coerceBoolean('bla')).toThrowError('Invalid value received');
|
||||
expect(() => coerceBoolean(' ')).toThrowError('Invalid value received');
|
||||
});
|
||||
|
||||
test.todo('false numbers', () => {
|
||||
test('true numbers', () => {
|
||||
expect(coerceBoolean(1)).toStrictEqual(true);
|
||||
});
|
||||
|
||||
test('false numbers', () => {
|
||||
expect(coerceBoolean(0)).toStrictEqual(false);
|
||||
expect(coerceBoolean(-1)).toStrictEqual(false);
|
||||
expect(coerceBoolean(-10000)).toStrictEqual(false);
|
||||
});
|
||||
|
||||
test('invalid numbers', () => {
|
||||
expect(() => coerceBoolean(0.5)).toThrowError('Invalid value received');
|
||||
expect(() => coerceBoolean(-1)).toThrowError('Invalid value received');
|
||||
expect(() => coerceBoolean(2)).toThrowError('Invalid value received');
|
||||
expect(() => coerceBoolean(NaN)).toThrowError('Invalid value received');
|
||||
expect(() => coerceBoolean(Infinity)).toThrowError('Invalid value received');
|
||||
});
|
||||
|
||||
test('booleans', () => {
|
||||
|
||||
@@ -33,8 +33,8 @@ export function coerceString(value: unknown): string {
|
||||
* @throws {Error} Throws an error if the value is null or undefined.
|
||||
*/
|
||||
export function coerceBoolean(value: unknown): boolean {
|
||||
if (value === undefined || typeof value === 'object') {
|
||||
throw new Error('Invalid value received');
|
||||
if (typeof value === 'boolean') {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const lowerCaseValue = value.toLocaleLowerCase();
|
||||
@@ -52,7 +52,11 @@ export function coerceBoolean(value: unknown): boolean {
|
||||
throw new Error('Invalid value received');
|
||||
}
|
||||
}
|
||||
return Boolean(value);
|
||||
if (typeof value === 'number') {
|
||||
if (value === 0) return false;
|
||||
if (value === 1) return true;
|
||||
}
|
||||
throw new Error('Invalid value received');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user