mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-27 09:59:08 +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);
|
expect(coerceBoolean('')).toStrictEqual(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('true numbers', () => {
|
test('invalid strings', () => {
|
||||||
expect(coerceBoolean(1)).toStrictEqual(true);
|
expect(() => coerceBoolean('bla')).toThrowError('Invalid value received');
|
||||||
expect(coerceBoolean(2)).toStrictEqual(true);
|
expect(() => coerceBoolean(' ')).toThrowError('Invalid value received');
|
||||||
expect(coerceBoolean(100000)).toStrictEqual(true);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test.todo('false numbers', () => {
|
test('true numbers', () => {
|
||||||
|
expect(coerceBoolean(1)).toStrictEqual(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('false numbers', () => {
|
||||||
expect(coerceBoolean(0)).toStrictEqual(false);
|
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', () => {
|
test('booleans', () => {
|
||||||
|
|||||||
@@ -33,8 +33,8 @@ export function coerceString(value: unknown): string {
|
|||||||
* @throws {Error} Throws an error if the value is null or undefined.
|
* @throws {Error} Throws an error if the value is null or undefined.
|
||||||
*/
|
*/
|
||||||
export function coerceBoolean(value: unknown): boolean {
|
export function coerceBoolean(value: unknown): boolean {
|
||||||
if (value === undefined || typeof value === 'object') {
|
if (typeof value === 'boolean') {
|
||||||
throw new Error('Invalid value received');
|
return value;
|
||||||
}
|
}
|
||||||
if (typeof value === 'string') {
|
if (typeof value === 'string') {
|
||||||
const lowerCaseValue = value.toLocaleLowerCase();
|
const lowerCaseValue = value.toLocaleLowerCase();
|
||||||
@@ -52,7 +52,11 @@ export function coerceBoolean(value: unknown): boolean {
|
|||||||
throw new Error('Invalid value received');
|
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