@northscaler/service-support
Version:
Artifacts that assist in writing service layers effectively
80 lines (75 loc) • 7.93 kB
JavaScript
/* global describe, it */
;
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==