softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
49 lines • 1.88 kB
JavaScript
import assert from 'assert';
import { isFunction, isString, isUndefined } from 'lodash-es';
import { checkErrorHasMessage, } from './checkErrorHasMessage.js';
import { checkErrorHasName } from './checkErrorHasName.js';
export function checkExpected(error, expected) {
if ((expected === null || expected === void 0 ? void 0 : expected.expectFn) && isFunction(expected === null || expected === void 0 ? void 0 : expected.expectFn)) {
const assertion = expected.expectFn(error);
if (!isUndefined(assertion)) {
assert(assertion === true, isString(assertion) ? assertion : 'Expectation not met');
}
}
if (expected === null || expected === void 0 ? void 0 : expected.name) {
const assertion = checkErrorHasName(error, expected.name, expected.shouldMatchAtLeastOne);
assert(assertion.matches, `Missing errors names: ${JSON.stringify(assertion.missingNames)}`);
}
if (expected === null || expected === void 0 ? void 0 : expected.message) {
const assertion = checkErrorHasMessage(error, expected.message, expected.messageMatcher, expected.shouldMatchAtLeastOne);
assert(assertion.matches, `Missing errors messages: ${JSON.stringify(assertion.missingMessages)}`);
}
}
export function expectErrorThrownSync(fn, expected, finallyFn) {
try {
fn();
assert.fail('Error not thrown');
}
catch (error) {
checkExpected(error, expected);
}
finally {
if (finallyFn) {
finallyFn();
}
}
}
export async function expectErrorThrownAsync(fn, expected, finallyFn) {
try {
await fn();
assert.fail('Error not thrown');
}
catch (error) {
checkExpected(error, expected);
}
finally {
if (finallyFn) {
finallyFn();
}
}
}
//# sourceMappingURL=expectErrorThrown.js.map