UNPKG

@northscaler/service-support

Version:

Artifacts that assist in writing service layers effectively

80 lines (75 loc) 7.93 kB
/* global describe, it */ 'use strict'; const chai = require('chai'); chai.use(require('dirty-chai')); const expect = chai.expect; const Enumeration = require('@northscaler/enum-support'); const { extractDtoFromEntity } = require('../../../main').service; describe('unit tests of extractDtoFromEntity', () => { it('should work', async function () { const Boolean = Enumeration.new({ name: 'Boolean', values: ['TRUE', 'FALSE'] }); const date = '2020/1/1'; const entity = { _zero: false, _one: 1, _two: { three: 3, // throw one in that doesn't have the _ prefix _four: null, _five: undefined, _six: [6, -6, { _nine: 9 }], _seven: new Date(date) }, _eight: it => it, _ten: Boolean.TRUE }; Object.defineProperty(entity, 'one', { get: function () { return this._one; }, set: function (v) { this._one = v; } }); expect(extractDtoFromEntity(entity)).to.deep.equal({ zero: false, one: 1, two: { three: 3, four: null, five: undefined, six: [6, -6, { nine: 9 }], seven: new Date(date).toISOString() }, ten: Boolean.TRUE.name }); expect(extractDtoFromEntity(entity, { keyReplacementRegEx: null, dateFormatter: it => `date:${it.toISOString()}`, enumerationFormatter: it => it.ordinal })).to.deep.equal({ _zero: false, _one: 1, _two: { three: 3, _four: null, _five: undefined, _six: [6, -6, { _nine: 9 }], _seven: 'date:' + new Date(date).toISOString() }, _ten: 0 }); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0L3VuaXQvc2VydmljZS9leHRyYWN0RHRvRnJvbUVudGl0eS5zcGVjLmpzIl0sIm5hbWVzIjpbImNoYWkiLCJyZXF1aXJlIiwidXNlIiwiZXhwZWN0IiwiRW51bWVyYXRpb24iLCJleHRyYWN0RHRvRnJvbUVudGl0eSIsInNlcnZpY2UiLCJkZXNjcmliZSIsIml0IiwiQm9vbGVhbiIsIm5ldyIsIm5hbWUiLCJ2YWx1ZXMiLCJkYXRlIiwiZW50aXR5IiwiX3plcm8iLCJfb25lIiwiX3R3byIsInRocmVlIiwiX2ZvdXIiLCJfZml2ZSIsInVuZGVmaW5lZCIsIl9zaXgiLCJfbmluZSIsIl9zZXZlbiIsIkRhdGUiLCJfZWlnaHQiLCJfdGVuIiwiVFJVRSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0Iiwic2V0IiwidiIsInRvIiwiZGVlcCIsImVxdWFsIiwiemVybyIsIm9uZSIsInR3byIsImZvdXIiLCJmaXZlIiwic2l4IiwibmluZSIsInNldmVuIiwidG9JU09TdHJpbmciLCJ0ZW4iLCJrZXlSZXBsYWNlbWVudFJlZ0V4IiwiZGF0ZUZvcm1hdHRlciIsImVudW1lcmF0aW9uRm9ybWF0dGVyIiwib3JkaW5hbCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQTs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBRCxJQUFJLENBQUNFLEdBQUwsQ0FBU0QsT0FBTyxDQUFDLFlBQUQsQ0FBaEI7QUFDQSxNQUFNRSxNQUFNLEdBQUdILElBQUksQ0FBQ0csTUFBcEI7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHSCxPQUFPLENBQUMsMkJBQUQsQ0FBM0I7O0FBRUEsTUFBTTtBQUFFSSxFQUFBQTtBQUFGLElBQTJCSixPQUFPLENBQUMsZUFBRCxDQUFQLENBQXlCSyxPQUExRDs7QUFFQUMsUUFBUSxDQUFDLG9DQUFELEVBQXVDLE1BQU07QUFDbkRDLEVBQUFBLEVBQUUsQ0FBQyxhQUFELEVBQWdCLGtC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QVUsSUFBSUMsSUFBSixDQUFTWixJQUFULEVBQWVnQyxXQUFmO0FBTGQsT0FIVTtBQVVoQmxCLE1BQUFBLElBQUksRUFBRTtBQVZVLEtBSmxCO0FBZ0JELEdBcERDLENBQUY7QUFxREQsQ0F0RE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBkZXNjcmliZSwgaXQgKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGNoYWkgPSByZXF1aXJlKCdjaGFpJylcbmNoYWkudXNlKHJlcXVpcmUoJ2RpcnR5LWNoYWknKSlcbmNvbnN0IGV4cGVjdCA9IGNoYWkuZXhwZWN0XG5jb25zdCBFbnVtZXJhdGlvbiA9IHJlcXVpcmUoJ0Bub3J0aHNjYWxlci9lbnVtLXN1cHBvcnQnKVxuXG5jb25zdCB7IGV4dHJhY3REdG9Gcm9tRW50aXR5IH0gPSByZXF1aXJlKCcuLi8uLi8uLi9tYWluJykuc2VydmljZVxuXG5kZXNjcmliZSgndW5pdCB0ZXN0cyBvZiBleHRyYWN0RHRvRnJvbUVudGl0eScsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCB3b3JrJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IEJvb2xlYW4gPSBFbnVtZXJhdGlvbi5uZXcoeyBuYW1lOiAnQm9vbGVhbicsIHZhbHVlczogWydUUlVFJywgJ0ZBTFNFJ10gfSlcbiAgICBjb25zdCBkYXRlID0gJzIwMjAvMS8xJ1xuICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgIF96ZXJvOiBmYWxzZSxcbiAgICAgIF9vbmU6IDEsXG4gICAgICBfdHdvOiB7XG4gICAgICAgIHRocmVlOiAzLCAvLyB0aHJvdyBvbmUgaW4gdGhhdCBkb2Vzbid0IGhhdmUgdGhlIF8gcHJlZml4XG4gICAgICAgIF9mb3VyOiBudWxsLFxuICAgICAgICBfZml2ZTogdW5kZWZpbmVkLFxuICAgICAgICBfc2l4OiBbNiwgLTYsIHtcbiAgICAgICAgICBfbmluZTogOVxuICAgICAgICB9XSxcbiAgICAgICAgX3NldmVuOiBuZXcgRGF0ZShkYXRlKVxuICAgICAgfSxcbiAgICAgIF9laWdodDogaXQgPT4gaXQsXG4gICAgICBfdGVuOiBCb29sZWFuLlRSVUVcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVudGl0eSwgJ29uZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fb25lIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7IHRoaXMuX29uZSA9IHYgfVxuICAgIH0pXG5cbiAgICBleHBlY3QoZXh0cmFjdER0b0Zyb21FbnRpdHkoZW50aXR5KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICB6ZXJvOiBmYWxzZSxcbiAgICAgIG9uZTogMSxcbiAgICAgIHR3bzoge1xuICAgICAgICB0aHJlZTogMyxcbiAgICAgICAgZm91cjogbnVsbCxcbiAgICAgICAgZml2ZTogdW5kZWZpbmVkLFxuICAgICAgICBzaXg6IFs2LCAtNiwgeyBuaW5lOiA5IH1dLFxuICAgICAgICBzZXZlbjogbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIHRlbjogQm9vbGVhbi5UUlVFLm5hbWVcbiAgICB9KVxuXG4gICAgZXhwZWN0KGV4dHJhY3REdG9Gcm9tRW50aXR5KGVudGl0eSwge1xuICAgICAga2V5UmVwbGFjZW1lbnRSZWdFeDogbnVsbCxcbiAgICAgIGRhdGVGb3JtYXR0ZXI6IGl0ID0+IGBkYXRlOiR7aXQudG9JU09TdHJpbmcoKX1gLFxuICAgICAgZW51bWVyYXRpb25Gb3JtYXR0ZXI6IGl0ID0+IGl0Lm9yZGluYWxcbiAgICB9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBfemVybzogZmFsc2UsXG4gICAgICBfb25lOiAxLFxuICAgICAgX3R3bzoge1xuICAgICAgICB0aHJlZTogMyxcbiAgICAgICAgX2ZvdXI6IG51bGwsXG4gICAgICAgIF9maXZlOiB1bmRlZmluZWQsXG4gICAgICAgIF9zaXg6IFs2LCAtNiwgeyBfbmluZTogOSB9XSxcbiAgICAgICAgX3NldmVuOiAnZGF0ZTonICsgbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKVxuICAgICAgfSxcbiAgICAgIF90ZW46IDBcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==