Assertion library
Syntax:
presuppose.validator(properties:object, options?:any, msg:string | ((propName:string) => string)):void;
Available validators are listed below
Checks if given object has only fields with non empty strings values. Example:
const presuppose = require(presuppose');
presuppose.nonEmptyStrings({ prop1: 'test', prop2: 'test2' });
the above code will not throw. However this:
presuppose.nonEmptyStrings({ prop1: 123, prop2: 'test2' });
will throw AssertionError
because prop1
is not a stirng.
This assertion also checks for emptiness:
presuppose.nonEmptyStrings({ prop: '' });
will throw because prop
is empty.
Checks if given object has only fields with strings or undefined values. Example:
presuppose.stringsOrUndefined({ prop1: 'abc', prop2: undefined });
the above code will not throw. However:
presuppose.stringsOrUndefined({ prop: 123 });
will throw AssertionError
Checks if given object has only fields with array valuest. Example:
presuppose.arrays({ arr: [] });
the above code will not throw. However:
presuppose.arrays({ arr: { length: 123 } });
will throw.
Checks if given object has only fields with arrays of non empty strings as values.Example
presuppose.arraysOfNonEmptyStrings({ arr: [ 'item1', 'item2' ] });
the above code will not throw since the input object has only one key: arr
which is an array of non empty strings. However:
presuppose.arraysOfNonEmptyStrings({ arr: [ 'item', 123 ] });
will throw.
Checks if given object has only fields with values specified by an argument to this function. Example:
presuppose.specificValues({ prop1: 123, prop2: 123 }, 123);
will not throw. However:
presuppose.specificValues({ prop: 111 }, 123);
will throw;
Checks if given object has only objects as fields. Example
presuppose.objects({ prop1: {foo: 'bar'}, prop2: new Date() });
will not throw. However this:
presuppose.objects({ prop1: 123 });
will throw. Also when given an array it will throw:
presuppose.objects({ prop1: [] }); // throws
Checks if all properties in a given object do not match a certain pattern. Example:
presuppose.stringsNotMatch({ prop1: 'test' }, /error/);
the above code will not throw because 'test'
do not match /error/
. However:
presuppose.stringsNotMatch({ prop1: 'test' }, /te*/);
will throw.
Checks if all properties in a given object are numbers. Optionally can include range codnditions.
Example:
presuppose.numbers({prop1: '1'})
will throw, cause '1'
is a string , while
presuppose.numbers({prop1: 1})
will not throw.
To check if the number is in specific range you can add a second parameter, which has to be an object containing one or more of the following props:
greaterThan
greaterThanOrEqual
lessThan
lesThanOrEqual
Example:
presuppose.numbers(
{prop1:10},
{greaterThan:5, lessThanOrEqual:10}
)
will not throw, as prop1
is greater than 5
and less than or equal 10
.
You can customize error message by providing a custom string:
presuppose.nonEmptyStrings({ a: 123 }, null, 'a cannot be empty');
If you have more then one property then it's useful to add a property name to the error message. you can do it like that:
presuppose.nonEmptyStrings({ a: 123, b: 222 }, null, propName => `${propName} cannot be empty`);
ISC - see LICENSE file