react-application-core
Version:
A react-based application core for the business applications.
231 lines • 11.9 kB
JavaScript
"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