softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
39 lines • 1.56 kB
JavaScript
import { isArray, isFunction, isString } from 'lodash-es';
export const kCheckErrorHasMessageMatcher = {
equal: 'equal',
includes: 'includes',
};
const equalityMatcher = (m1, m2) => isString(m2) ? m1 === m2 : m2.test(m1);
const includesMatcher = (m1, m2) => isString(m2) ? m1.includes(m2) : m2.test(m1);
const noopMatcher = () => true;
export function checkErrorHasMessage(error, expectedErrorMessages, matcher = kCheckErrorHasMessageMatcher.includes, shouldMatchAtLeastOne = true) {
const errorList = isArray(error) ? error : [error];
const matchedMessages = [];
const missingMessages = [];
const matcherFn = isFunction(matcher)
? matcher
: matcher === 'equal'
? equalityMatcher
: matcher === 'includes'
? includesMatcher
: noopMatcher;
expectedErrorMessages = isArray(expectedErrorMessages)
? expectedErrorMessages
: [expectedErrorMessages];
expectedErrorMessages.forEach(expectedMessage => {
const matched = errorList.some(error => matcherFn(error === null || error === void 0 ? void 0 : error.message, expectedMessage));
if (matched) {
matchedMessages.push(expectedMessage);
}
else {
missingMessages.push(expectedMessage);
}
});
return {
matchedMessages,
missingMessages,
matches: (shouldMatchAtLeastOne && matchedMessages.length > 0) ||
missingMessages.length === 0,
};
}
//# sourceMappingURL=checkErrorHasMessage.js.map