UNPKG

react-application-core

Version:

A react-based application core for the business applications.

231 lines 11.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var multifield_support_1 = require("./multifield.support"); var definitions_interface_1 = require("../../../definitions.interface"); var util_1 = require("../../../util"); describe('multifield.support', function () { describe('toMultiFieldChangesEntityOnDelete', function () { it('test1', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnDelete({ id: 100 }, // payload [item1, item2], // add [], // remove [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], // edit [] // original ); expect(result).toEqual({ removeArray: [], editArray: [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], addArray: [item2], }); }); it('test2', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnDelete({ id: 102 }, // payload [item1, item2], // add [], // remove [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], // edit [] // original ); expect(result).toEqual({ removeArray: [], editArray: [], addArray: [item1, item2], }); }); it('test3', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var item4 = { id: 103, field1: 20000, field2: 30000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnDelete({ id: 103 }, // payload [item1, item2], // add [], // remove [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], // edit [item3, item4] // original ); expect(result).toEqual({ removeArray: [item4], editArray: [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], addArray: [item1, item2], }); }); it('test4', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var item4 = { id: 103, field1: 20000, field2: 30000 }; var item5 = { id: 104, field1: 200000, field2: 300000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnDelete({ id: 103 }, // payload [item1, item2], // add [item5], // remove [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], // edit [item3, item4, item5] // original ); expect(result).toEqual({ removeArray: [item4, item5], editArray: [{ id: 102, name: 'field2', value: 3001, rawData: item3 }], addArray: [item1, item2], }); }); }); describe('toMultiFieldChangesEntityOnEdit', function () { it('test1', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var result = multifield_support_1.toMultiFieldChangesEntityOnEdit({ name: 'field1', value: 21, id: 100, rawData: item1 }, // payload [item1, item2], // add [], // remove [{ id: 101, name: 'field2', value: 301, rawData: item2 }], // edit [] // original ); expect(result).toEqual({ removeArray: [], editArray: [{ id: 101, name: 'field2', value: 301, rawData: item2 }], addArray: [Object.assign({}, item1, { field1: 21 }), item2], }); }); it('test2', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnEdit({ name: 'field1', value: 21, id: 100, rawData: item1 }, // payload [], // add [], // remove [], // edit [item1, item2, item3] // original ); expect(result).toEqual({ removeArray: [], editArray: [{ id: 100, name: 'field1', value: 21, rawData: item1 }], addArray: [], }); }); it('test3', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnEdit({ id: 100, name: 'field1', value: 21, rawData: item1 }, // payload [], // add [], // remove [{ id: 101, name: 'field2', value: 301, rawData: item2 }], // edit [item1, item2, item3] // original ); expect(result).toEqual({ removeArray: [], editArray: [ { id: 101, name: 'field2', value: 301, rawData: item2 }, { id: 100, name: 'field1', value: 21, rawData: item1 } ], addArray: [], }); }); it('test4', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnEdit({ id: 101, name: 'field2', value: 300, rawData: item1 }, // payload [], // add [], // remove [{ id: 101, name: 'field2', value: 301, rawData: item2 }], // edit [item1, item2, item3] // original ); expect(result).toEqual({ removeArray: [], editArray: [], addArray: [], }); }); it('test5', function () { var item1 = { id: 100, field1: 20, field2: 30 }; var item2 = { id: 101, field1: 200, field2: 300 }; var item3 = { id: 102, field1: 2000, field2: 3000 }; var result = multifield_support_1.toMultiFieldChangesEntityOnEdit({ id: 101, name: 'field2', value: 300, rawData: item1 }, // payload [], // add [], // remove [ { id: 101, name: 'field2', value: 301, rawData: item2 }, { id: 101, name: 'field1', value: 201, rawData: item2 } ], // edit [item1, item2, item3] // original ); expect(result).toEqual({ removeArray: [], editArray: [{ id: 101, name: 'field1', value: 201, rawData: item2 }], addArray: [], }); }); }); describe('buildMultiEditItemEntityPayload', function () { it('test1', function () { var entity = Object.freeze({ id: 1, count: 100 }); var result = util_1.MultiFieldUtils.asMultiItemEditReplacedEntity('count', [entity], function (itm) { return itm.id === entity.id; }, function (itm) { return entity.count + 1; }); expect(result).toEqual({ id: 1, value: 101, name: 'count', rawData: { id: 1, count: 100 } }); }); it('test2', function () { var entity = Object.freeze({ id: 1, count: 100 }); var result = util_1.MultiFieldUtils.asMultiItemEditReplacedEntity('count', { add: [], remove: [], edit: [{ id: entity.id, name: 'count', value: 101, rawData: entity }], source: [entity], }, function (itm) { return itm.id === entity.id; }, function (itm) { return itm.value + 1; }); expect(result).toEqual({ id: 1, value: 102, name: 'count', rawData: { id: 1, count: 100 } }); }); }); describe('asMultiFieldMappedEntities', function () { it('test1', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities([{ id: 100, name: 'name100' }, { id: 200, name: 'name200' }], function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); var result = []; result.push({ id: 100, name: 'name100', extraField: 'extraField0' }); result.push({ id: 200, name: 'name200', extraField: 'extraField1' }); expect(data).toEqual(result); }); it('test2', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities(null, function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); expect(data).toEqual(definitions_interface_1.UNDEF); }); it('test3', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities(definitions_interface_1.UNDEF, function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); expect(data).toEqual(definitions_interface_1.UNDEF); }); it('test4', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities({ add: [{ id: 100, name: 'name100' }, { id: 200, name: 'name200' }], remove: [], edit: [], }, function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); var result = []; result.push({ id: 100, name: 'name100', extraField: 'extraField0' }); result.push({ id: 200, name: 'name200', extraField: 'extraField1' }); expect(data).toEqual(result); }); it('test5', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities({ add: [{ id: 100, name: 'name100' }], remove: [{ id: 200, name: 'name200' }], edit: [], source: [{ id: 200, name: 'name200' }, { id: 200, name: 'name200' }], }, function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); var result = []; result.push({ id: 100, name: 'name100', extraField: 'extraField0' }); expect(data).toEqual(result); }); it('test5', function () { var data = util_1.MultiFieldUtils.multiFieldValueAsMappedEntities({ add: [], remove: [], edit: [{ id: 100, value: 'name101', name: 'name', rawData: { id: 100, name: 'name100' } }], source: [{ id: 100, name: 'name100' }], }, function (entity, index) { return Object.assign({}, entity, { extraField: "extraField" + index }); }); var result = []; result.push({ id: 100, name: 'name101', extraField: 'extraField0' }); expect(data).toEqual(result); }); }); }); //# sourceMappingURL=multifield.support.spec.js.map