@integec/grid-tools
Version:
Integ Grid Tools
134 lines (110 loc) • 4.39 kB
JavaScript
'use strict';
var _editEngine = require('./editEngine');
var editEngine = _interopRequireWildcard(_editEngine);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
test('initial edit info should not be dirty', function () {
expect(editEngine.isDirty(editEngine.generateInitialEditInfo())).toBe(false);
}); /* eslint-env jest */
test('edit info should be dirty after add', function () {
var editInfo = editEngine.generateInitialEditInfo();
var addedInfo = editEngine.addRow({
editInfo: editInfo,
editedRow: {}
});
expect(editEngine.isDirty(addedInfo)).toBe(true);
});
test('should add row properly', function () {
var editInfo = editEngine.generateInitialEditInfo();
var editedRow = {};
var addedInfo = editEngine.addRow({
editInfo: editInfo,
editedRow: editedRow
});
expect(addedInfo.added.length).toBe(1);
expect(addedInfo.added[0]).toBe(editedRow);
expect(addedInfo.history.length).toBe(1);
expect(addedInfo.history[0]).toBe(editInfo);
});
test('should do nothing when currentRow and editedRow are not defined', function () {
var initialEdit = editEngine.generateInitialEditInfo();
var updated1 = editEngine.updateRow({
editInfo: initialEdit
});
expect(initialEdit).toBe(updated1);
});
test('should update row properly', function () {
var row1 = { a: 1, b: '2' };
var row1Updated = { a: 2, b: '2' };
var initialEdit = editEngine.generateInitialEditInfo();
var updated1 = editEngine.updateRow({
editInfo: initialEdit,
currentRow: row1,
editedRow: row1Updated
});
expect(updated1.updated).toContain(row1Updated);
expect(updated1.dirtyMap.has(row1Updated)).toBe(true);
expect(updated1.updatedMap.has(row1)).toBe(true);
expect(updated1.history.length).toBe(1);
var row2Updated = { a: 2, b: '3' };
var updated2 = editEngine.updateRow({
editInfo: updated1,
currentRow: row1Updated,
editedRow: row2Updated
});
expect(updated2.updated).toContain(row2Updated);
expect(updated2.updated.length).toBe(1);
expect(updated2.dirtyMap.has(row2Updated)).toBe(true);
expect(updated2.updatedMap.has(row1)).toBe(true);
expect(updated2.history.length).toBe(2);
var rowAdded = { a: 5, b: '4' };
var updated3 = editEngine.updateRow({
editInfo: updated2,
currentRow: undefined,
editedRow: rowAdded
});
expect(updated3.added).toContain(rowAdded);
expect(updated3.history.length).toBe(3);
var rowAddedUpdate = { a: 6, b: '4' };
var updated4 = editEngine.updateRow({
editInfo: updated3,
currentRow: rowAdded,
editedRow: rowAddedUpdate
});
expect(updated4.added).toContain(rowAddedUpdate);
expect(updated4.added).not.toContain(rowAdded);
expect(updated4.updated).not.toContain(rowAddedUpdate);
expect(updated4.updated).not.toContain(rowAdded);
expect(updated4.dirtyMap.has(rowAdded)).toBe(false);
expect(updated4.dirtyMap.has(rowAddedUpdate)).toBe(false);
expect(updated4.updatedMap.has(rowAdded)).toBe(false);
expect(updated4.updatedMap.has(rowAddedUpdate)).toBe(false);
var undo1 = editEngine.undo(updated4);
expect(undo1).toBe(updated3);
var undo2 = editEngine.undo(undo1);
expect(undo2).toBe(updated2);
var undo3 = editEngine.undo(undo2);
expect(undo3).toBe(updated1);
var result1 = editEngine.applyEdits({ data: [row1], editInfo: updated4 });
expect(result1).toContain(rowAddedUpdate);
expect(result1).toContain(row2Updated);
expect(result1.length).toBe(2);
var deleted1 = editEngine.removeRow({
editInfo: updated4,
currentRow: rowAddedUpdate
});
expect(deleted1.removed.length).toBe(0);
var result2 = editEngine.applyEdits({ data: [row1], editInfo: deleted1 });
expect(result2).toContain(row2Updated);
expect(result2.length).toBe(1);
var deleted2 = editEngine.removeRow({
editInfo: updated4,
currentRow: row2Updated
});
expect(deleted2.updated.length).toBe(0);
expect(deleted2.updatedMap.size).toBe(0);
expect(deleted2.dirtyMap.size).toBe(0);
var result3 = editEngine.applyEdits({ data: [row1], editInfo: deleted2 });
expect(result3).toContain(rowAddedUpdate);
expect(result3.length).toBe(1);
});
//# sourceMappingURL=editEngine.test.js.map