UNPKG

@northscaler/service-support

Version:

Artifacts that assist in writing service layers effectively

81 lines (73 loc) 8.79 kB
/* global describe, it */ 'use strict'; const chai = require('chai'); chai.use(require('dirty-chai')); const expect = chai.expect; const { CodedError } = require('@northscaler/error-support'); const { servicifyOutcomeOf } = require('../../../main').service; const { ResponseStatus } = require('../../../main').enums; const BadError = CodedError({ name: 'BadError' }); describe('unit tests of servicifyOutcomeOf', () => { it('should create service response from dto', async function () { var _actual$meta; const dto = { my: 'dto' }; const expected = { data: dto, meta: { status: ResponseStatus.SUCCESS.name } }; const actual = await servicifyOutcomeOf({ fn: () => dto }); expect(actual === null || actual === void 0 ? void 0 : (_actual$meta = actual.meta) === null || _actual$meta === void 0 ? void 0 : _actual$meta.elapsedMillis).to.be.at.least(0); delete actual.meta.elapsedMillis; expect(actual).to.deep.equal(expected); }); it('should create service response from error', async function () { var _actual$meta2, _actual$error, _actual$error2, _actual$error2$cause; const causeMsg = 'because'; const msg = 'message'; const code = BadError.CODE; const expected = { error: { cause: { message: causeMsg, name: 'Error' }, code, message: `${code}: ${msg}: ${causeMsg}`, name: 'BadError' }, meta: { status: ResponseStatus.FAILURE.name } }; const actual = await servicifyOutcomeOf({ fn: () => function (e) { throw e; }(new BadError({ msg, cause: new Error(causeMsg) })) }); expect(actual === null || actual === void 0 ? void 0 : (_actual$meta2 = actual.meta) === null || _actual$meta2 === void 0 ? void 0 : _actual$meta2.elapsedMillis).to.be.at.least(0); delete actual.meta.elapsedMillis; expect(actual === null || actual === void 0 ? void 0 : (_actual$error = actual.error) === null || _actual$error === void 0 ? void 0 : _actual$error.stack).to.be.ok(); expect(actual === null || actual === void 0 ? void 0 : (_actual$error2 = actual.error) === null || _actual$error2 === void 0 ? void 0 : (_actual$error2$cause = _actual$error2.cause) === null || _actual$error2$cause === void 0 ? void 0 : _actual$error2$cause.stack).to.be.ok(); delete actual.error.stack; delete actual.error.cause.stack; expect(actual).to.deep.equal(expected); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0L3VuaXQvc2VydmljZS9zZXJ2aWNpZnlPdXRjb21lT2Yuc3BlYy5qcyJdLCJuYW1lcyI6WyJjaGFpIiwicmVxdWlyZSIsInVzZSIsImV4cGVjdCIsIkNvZGVkRXJyb3IiLCJzZXJ2aWNpZnlPdXRjb21lT2YiLCJzZXJ2aWNlIiwiUmVzcG9uc2VTdGF0dXMiLCJlbnVtcyIsIkJhZEVycm9yIiwibmFtZSIsImRlc2NyaWJlIiwiaXQiLCJkdG8iLCJteSIsImV4cGVjdGVkIiwiZGF0YSIsIm1ldGEiLCJzdGF0dXMiLCJTVUNDRVNTIiwiYWN0dWFsIiwiZm4iLCJlbGFwc2VkTWlsbGlzIiwidG8iLCJiZSIsImF0IiwibGVhc3QiLCJkZWVwIiwiZXF1YWwiLCJjYXVzZU1zZyIsIm1zZyIsImNvZGUiLCJDT0RFIiwiZXJyb3IiLCJjYXVzZSIsIm1lc3NhZ2UiLCJGQUlMVVJFIiwiRXJyb3IiLCJzdGFjayIsIm9rIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUVBOztBQUVBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0FELElBQUksQ0FBQ0UsR0FBTCxDQUFTRCxPQUFPLENBQUMsWUFBRCxDQUFoQjtBQUNBLE1BQU1FLE1BQU0sR0FBR0gsSUFBSSxDQUFDRyxNQUFwQjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBaUJILE9BQU8sQ0FBQyw0QkFBRCxDQUE5Qjs7QUFFQSxNQUFNO0FBQUVJLEVBQUFBO0FBQUYsSUFBeUJKLE9BQU8sQ0FBQyxlQUFELENBQVAsQ0FBeUJLLE9BQXhEOztBQUNBLE1BQU07QUFBRUMsRUFBQUE7QUFBRixJQUFxQk4sT0FBTyxDQUFDLGVBQUQsQ0FBUCxDQUF5Qk8sS0FBcEQ7O0FBRUEsTUFBTUMsUUFBUSxHQUFHTCxVQUFVLENBQUM7QUFBRU0sRUFBQUEsSUFBSSxFQUFFO0FBQVIsQ0FBRCxDQUEzQjtBQUVBQyxRQUFRLENBQUMsa0NBQUQsRUFBcUMsTUFBTTtBQUNq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QUFiLENBQW1CSSxLQUExQjtBQUVBbkMsSUFBQUEsTUFBTSxDQUFDaUIsTUFBRCxDQUFOLENBQWVHLEVBQWYsQ0FBa0JJLElBQWxCLENBQXVCQyxLQUF2QixDQUE2QmIsUUFBN0I7QUFDRCxHQWpDQyxDQUFGO0FBa0NELENBckRPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgZGVzY3JpYmUsIGl0ICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBjaGFpID0gcmVxdWlyZSgnY2hhaScpXG5jaGFpLnVzZShyZXF1aXJlKCdkaXJ0eS1jaGFpJykpXG5jb25zdCBleHBlY3QgPSBjaGFpLmV4cGVjdFxuY29uc3QgeyBDb2RlZEVycm9yIH0gPSByZXF1aXJlKCdAbm9ydGhzY2FsZXIvZXJyb3Itc3VwcG9ydCcpXG5cbmNvbnN0IHsgc2VydmljaWZ5T3V0Y29tZU9mIH0gPSByZXF1aXJlKCcuLi8uLi8uLi9tYWluJykuc2VydmljZVxuY29uc3QgeyBSZXNwb25zZVN0YXR1cyB9ID0gcmVxdWlyZSgnLi4vLi4vLi4vbWFpbicpLmVudW1zXG5cbmNvbnN0IEJhZEVycm9yID0gQ29kZWRFcnJvcih7IG5hbWU6ICdCYWRFcnJvcicgfSlcblxuZGVzY3JpYmUoJ3VuaXQgdGVzdHMgb2Ygc2VydmljaWZ5T3V0Y29tZU9mJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGNyZWF0ZSBzZXJ2aWNlIHJlc3BvbnNlIGZyb20gZHRvJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGR0byA9IHsgbXk6ICdkdG8nIH1cblxuICAgIGNvbnN0IGV4cGVjdGVkID0ge1xuICAgICAgZGF0YTogZHRvLFxuICAgICAgbWV0YToge1xuICAgICAgICBzdGF0dXM6IFJlc3BvbnNlU3RhdHVzLlNVQ0NFU1MubmFtZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbCA9IGF3YWl0IHNlcnZpY2lmeU91dGNvbWVPZih7IGZuOiAoKSA9PiBkdG8gfSlcblxuICAgIGV4cGVjdChhY3R1YWw/Lm1ldGE/LmVsYXBzZWRNaWxsaXMpLnRvLmJlLmF0LmxlYXN0KDApXG4gICAgZGVsZXRlIGFjdHVhbC5tZXRhLmVsYXBzZWRNaWxsaXNcblxuICAgIGV4cGVjdChhY3R1YWwpLnRvLmRlZXAuZXF1YWwoZXhwZWN0ZWQpXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgc2VydmljZSByZXNwb25zZSBmcm9tIGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNhdXNlTXNnID0gJ2JlY2F1c2UnXG4gICAgY29uc3QgbXNnID0gJ21lc3NhZ2UnXG4gICAgY29uc3QgY29kZSA9IEJhZEVycm9yLkNPREVcblxuICAgIGNvbnN0IGV4cGVjdGVkID0ge1xuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY2F1c2U6IHtcbiAgICAgICAgICBtZXNzYWdlOiBjYXVzZU1zZyxcbiAgICAgICAgICBuYW1lOiAnRXJyb3InXG4gICAgICAgIH0sXG4gICAgICAgIGNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IGAke2NvZGV9OiAke21zZ306ICR7Y2F1c2VNc2d9YCxcbiAgICAgICAgbmFtZTogJ0JhZEVycm9yJ1xuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgc3RhdHVzOiBSZXNwb25zZVN0YXR1cy5GQUlMVVJFLm5hbWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWwgPSBhd2FpdCBzZXJ2aWNpZnlPdXRjb21lT2Yoe1xuICAgICAgZm46ICgpID0+IHRocm93IG5ldyBCYWRFcnJvcih7IG1zZywgY2F1c2U6IG5ldyBFcnJvcihjYXVzZU1zZykgfSlcbiAgICB9KVxuXG4gICAgZXhwZWN0KGFjdHVhbD8ubWV0YT8uZWxhcHNlZE1pbGxpcykudG8uYmUuYXQubGVhc3QoMClcbiAgICBkZWxldGUgYWN0dWFsLm1ldGEuZWxhcHNlZE1pbGxpc1xuXG4gICAgZXhwZWN0KGFjdHVhbD8uZXJyb3I/LnN0YWNrKS50by5iZS5vaygpXG4gICAgZXhwZWN0KGFjdHVhbD8uZXJyb3I/LmNhdXNlPy5zdGFjaykudG8uYmUub2soKVxuICAgIGRlbGV0ZSBhY3R1YWwuZXJyb3Iuc3RhY2tcbiAgICBkZWxldGUgYWN0dWFsLmVycm9yLmNhdXNlLnN0YWNrXG5cbiAgICBleHBlY3QoYWN0dWFsKS50by5kZWVwLmVxdWFsKGV4cGVjdGVkKVxuICB9KVxufSlcbiJdfQ==