@sprucelabs/test-utils
Version:
Helpful utilities to make asserting more complicated conditions quick and easy! ⚡️
58 lines (57 loc) • 2.4 kB
JavaScript
import AbstractSpruceError from '@sprucelabs/error';
import cloneDeep from 'just-clone';
import assert from '../assert/assert.js';
import assertUtil from '../assert/assert.utility.js';
function removeProps(obj, keys) {
if (obj instanceof Array) {
obj.forEach(function (item, idx) {
if (item instanceof AbstractSpruceError) {
obj[idx] = item = { options: item.options };
}
removeProps(item, keys);
});
}
else if (obj && typeof obj === 'object') {
Object.getOwnPropertyNames(obj).forEach(function (key) {
if (obj[key] instanceof AbstractSpruceError) {
obj[key] = { options: obj[key].options };
removeProps(obj[key], keys);
}
else if (keys.indexOf(key) !== -1) {
delete obj[key];
}
else {
removeProps(obj[key], keys);
}
});
}
}
const errorAssert = {
assertError(error, expectedCode, expectedPartialOptions) {
var _a, _b;
const spruceErr = error;
if (!(spruceErr instanceof AbstractSpruceError)) {
if (spruceErr instanceof Error || spruceErr.message) {
assertUtil.fail(`Did not receive a SpruceError, got:\n\nMessage: ${(_a = spruceErr.message) !== null && _a !== void 0 ? _a : '***missing***'}`, (_b = spruceErr.stack) !== null && _b !== void 0 ? _b : '');
}
else {
assertUtil.fail(`Did not receive a SpruceError, got: \n\n${assertUtil.stringify(error)}`);
}
}
if (spruceErr.options.code === expectedCode) {
if (expectedPartialOptions) {
assert.doesInclude(spruceErr.options, expectedPartialOptions);
}
}
else {
const { code, friendlyMessage, ...options } = spruceErr.options;
assertUtil.fail(`Invalid error code. Expected:\n\n'${expectedCode}'\n\nbut got:\n\nCode: '${code}'\nMessage: '${friendlyMessage !== null && friendlyMessage !== void 0 ? friendlyMessage : spruceErr.message}'\nOptions:${assertUtil.stringify(options)}`, spruceErr.stack);
}
},
stripFriendlyMessageFromOptions(options) {
const clone = cloneDeep(options);
removeProps(clone, ['friendlyMessage']);
return clone;
},
};
export default errorAssert;