@sprucelabs/test-utils
Version:
Helpful utilities to make asserting more complicated conditions quick and easy! ⚡️
62 lines (61 loc) • 2.63 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const error_1 = __importDefault(require("@sprucelabs/error"));
const just_clone_1 = __importDefault(require("just-clone"));
const assert_1 = __importDefault(require("../assert/assert"));
const assert_utility_1 = __importDefault(require("../assert/assert.utility"));
function removeProps(obj, keys) {
if (obj instanceof Array) {
obj.forEach(function (item, idx) {
if (item instanceof error_1.default) {
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 error_1.default) {
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) {
const spruceErr = error;
if (!(spruceErr instanceof error_1.default)) {
if (spruceErr instanceof Error || spruceErr.message) {
assert_utility_1.default.fail(`Did not receive a SpruceError, got:\n\nMessage: ${spruceErr.message ?? '***missing***'}`, spruceErr.stack ?? '');
}
else {
assert_utility_1.default.fail(`Did not receive a SpruceError, got: \n\n${assert_utility_1.default.stringify(error)}`);
}
}
if (spruceErr.options.code === expectedCode) {
if (expectedPartialOptions) {
assert_1.default.doesInclude(spruceErr.options, expectedPartialOptions);
}
}
else {
const { code, friendlyMessage, ...options } = spruceErr.options;
assert_utility_1.default.fail(`Invalid error code. Expected:\n\n'${expectedCode}'\n\nbut got:\n\nCode: '${code}'\nMessage: '${friendlyMessage ?? spruceErr.message}'\nOptions:${assert_utility_1.default.stringify(options)}`, spruceErr.stack);
}
},
stripFriendlyMessageFromOptions(options) {
const clone = (0, just_clone_1.default)(options);
removeProps(clone, ['friendlyMessage']);
return clone;
},
};
exports.default = errorAssert;