import DataUnit from "../../src/dataunit/DataUnit"; import { Action, DataUnitAction } from "../../src/dataunit/state/action/DataUnitAction"; import { createDataUnitMock } from "./loader/utils/createDataUnitMock"; import { recordsTest } from "./resources/records"; describe('Actions', () => { let dataUnit: DataUnit; beforeEach(() => { jest.clearAllMocks(); window.requestAnimationFrame = (functionCallback: Function) => functionCallback(); ({ dataUnit } = createDataUnitMock()); }); describe('savingCanceled', () => { it('should emit event savingCanceled', async () => { const savingCanceled = jest.fn(); const observer = async (action: DataUnitAction) => { if (action.type === Action.SAVING_CANCELED) { savingCanceled(); } return; } dataUnit.subscribe(observer); dataUnit.selectFirst(); await dataUnit.setFieldValue('column_name_1', 'new_value'); dataUnit.savingCanceled([{ name: 'column_name_1', message: 'cancel_saving' }], 'test_1'); expect(savingCanceled).toHaveBeenCalled(); }); }); describe('clearInvalid', () => { beforeEach(async () => { await dataUnit.loadMetadata(); await dataUnit.loadData(); }); it('should emit event savingCanceled', async () => { const invalidateClean = jest.fn(); const observer = async (action: DataUnitAction) => { if (action.type === Action.INVALIDATE_CLEAN) { invalidateClean(); } return; } dataUnit.subscribe(observer); dataUnit.selectFirst(); await dataUnit.setFieldValue('column_name_1', 'new_value'); dataUnit.clearInvalid('test_1', 'column_name_1'); expect(invalidateClean).toHaveBeenCalled(); }); }); describe('redo', () => { beforeEach(async () => { await dataUnit.loadMetadata(); await dataUnit.loadData(); const saveLoaderMock = jest.fn().mockResolvedValue(recordsTest); dataUnit.saveLoader = saveLoaderMock; }); it('should return true when field value changes can redo', async () => { dataUnit.selectFirst(); await dataUnit.setFieldValue('column_name_1', 'new_value'); dataUnit.undo(); let fieldValue = dataUnit.getFieldValue('column_name_1'); expect(fieldValue).toBe('column_value_1'); dataUnit.redo(); fieldValue = dataUnit.getFieldValue('column_name_1'); expect(fieldValue).toBe('new_value'); }); }); });