// @flow import Operation from './Operation'; import OperationManager from './OperationManager'; describe('OperationManager)', () => { let addOperation = null; let updateOperation = null; let operationManager = null; const initOperationManager = () => { addOperation = new Operation( 'ADD', { entityType: 'item', id: 'foo' }, { id: 'foo', value: 'foobarbaz' } ); updateOperation = new Operation( 'UPDATE', { entityType: 'parent', id: 'bar' }, { value: 'contentOfBar2' } ); operationManager = new OperationManager(addOperation); operationManager.addOperation(updateOperation); }; beforeAll(() => { initOperationManager(); }); it('operationsRequireRead, operationsNotResolved should be set properly', () => { expect(operationManager.getOperationsNotResolved()).toEqual([addOperation, updateOperation]); expect(operationManager.getOperationsRequireRead()).toEqual([updateOperation]); }); it('operationsRequireRead, operationsNotResolved should not be duplicated', () => { operationManager.addOperation(new Operation( 'UPDATE', { entityType: 'parent', id: 'bar' }, { value: 'contentOfBar3' } )); expect(operationManager.getOperationsNotResolved()).toEqual([addOperation, updateOperation]); expect(operationManager.getOperationsRequireRead()).toEqual([updateOperation]); }); it('operationsRequireRead should be deleted after operation.setBefore()', () => { updateOperation.setBefore({ id: 'bar', value: 'contentOfBar1' }); expect(operationManager.getOperationsNotResolved()).toEqual([addOperation, updateOperation]); expect(operationManager.getOperationsRequireRead()).toEqual([]); }); it('operationsNotResolved should be deleted after operation.markAsResolved()', () => { addOperation.markAsResolved(); expect(operationManager.getOperationsNotResolved()).toEqual([updateOperation]); expect(operationManager.getOperationsRequireRead()).toEqual([]); updateOperation.markAsResolved(); expect(operationManager.getOperationsNotResolved()).toEqual([]); expect(operationManager.getOperationsRequireRead()).toEqual([]); }); });