@push.rocks/smartexpect
Version:
A testing library to manage expectations in code, offering both synchronous and asynchronous assertion methods.
56 lines • 3.58 kB
JavaScript
import { Assertion } from '../smartexpect.classes.assertion.js';
/**
* Namespace for function-specific matchers
*/
export class FunctionMatchers {
constructor(assertion) {
this.assertion = assertion;
}
toThrow(expectedError) {
return this.assertion.customAssertion((value) => {
let threw = false;
try {
value();
}
catch (e) {
threw = true;
if (expectedError) {
if (typeof expectedError === 'function') {
return e instanceof expectedError;
}
return e === expectedError;
}
}
return threw;
}, `Expected function to throw${expectedError ? ` ${expectedError}` : ''}`);
}
/**
* Assert thrown error message matches the given regex
*/
toThrowErrorMatching(regex) {
return this.assertion.customAssertion((value) => {
try {
value();
}
catch (e) {
return regex.test(e && e.message);
}
return false;
}, `Expected function to throw error matching ${regex}`);
}
/**
* Assert thrown error message equals the given string
*/
toThrowErrorWithMessage(expectedMessage) {
return this.assertion.customAssertion((value) => {
try {
value();
}
catch (e) {
return e && e.message === expectedMessage;
}
return false;
}, `Expected function to throw error with message "${expectedMessage}"`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9uYW1lc3BhY2VzL2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUdoRTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFBRyxDQUFDO0lBRXpELE9BQU8sQ0FBQyxhQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQztnQkFDRixLQUFrQixFQUFFLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2IsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxPQUFPLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDeEMsT0FBTyxDQUFDLFlBQVksYUFBYSxDQUFDO29CQUNwQyxDQUFDO29CQUNELE9BQU8sQ0FBQyxLQUFLLGFBQWEsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFDRCw2QkFBNkIsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFDRDs7T0FFRztJQUNILG9CQUFvQixDQUFDLEtBQWE7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDbkMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQztnQkFDRixLQUFrQixFQUFFLENBQUM7WUFDeEIsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFDRCw2Q0FBNkMsS0FBSyxFQUFFLENBQ3JELENBQUM7SUFDSixDQUFDO0lBQ0Q7O09BRUc7SUFDSCx1QkFBdUIsQ0FBQyxlQUF1QjtRQUM3QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDO2dCQUNGLEtBQWtCLEVBQUUsQ0FBQztZQUN4QixDQUFDO1lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxlQUFlLENBQUM7WUFDNUMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUNELGtEQUFrRCxlQUFlLEdBQUcsQ0FDckUsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9