UNPKG

@sprucelabs/test-utils

Version:

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

58 lines (57 loc) 2.4 kB
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;