UNPKG

@sprucelabs/test-utils

Version:

Helpful utilities to make asserting more complicated conditions quick and easy! ⚡️

62 lines (61 loc) 2.63 kB
"use strict"; 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;