import DataUnit from "../../src/dataunit/DataUnit"; import { createDataUnitMock } from "./loader/utils/createDataUnitMock"; import { metadata } from "./resources/metadata"; describe('Access parent dataUnits', () => { let dataUnit: DataUnit; let metadataLoaderMock = jest.fn(); beforeEach(() => { jest.clearAllMocks(); window.requestAnimationFrame = (functionCallback: Function) => functionCallback(); ({ dataUnit, metadataLoaderMock } = createDataUnitMock()); }); describe('getChildInfo', () => { beforeEach(async () => { await dataUnit.loadMetadata(); await dataUnit.loadData(); }); it('should return metadata children data', () => { const name = dataUnit.getChildInfo('child'); expect(name).toStrictEqual(metadata.children![0]); }); it('should return undefined when dont has metadata', async () => { metadataLoaderMock.mockResolvedValue(undefined); await dataUnit.loadMetadata(); const name = dataUnit.getChildInfo('child'); expect(name).toBeUndefined(); }); it('should return undefined when dont has metadata children data', async () => { metadataLoaderMock.mockResolvedValue({ ...metadata, children: undefined }); await dataUnit.loadMetadata(); const name = dataUnit.getChildInfo('child'); expect(name).toBeUndefined(); }); }); describe('getParentDataUnit', () => { it('should return parent dataUnit', () => { const childDataUnit = new DataUnit('child', dataUnit); const parentDataUnit = childDataUnit.getParentDataUnit(); expect(parentDataUnit).toStrictEqual(dataUnit); }); }); describe('isParentDirty', () => { it('should return true when parent is dirty', async () => { dataUnit.selectFirst(); await dataUnit.setFieldValue('column_name_1', 'new_value'); const childDataUnit = new DataUnit('child', dataUnit); const parentIsDirty = childDataUnit.isParentDirty(); expect(parentIsDirty).toBeTruthy(); }); it('should return false when parent is not dirty', () => { const childDataUnit = new DataUnit('child', dataUnit); const parentIsDirty = childDataUnit.isParentDirty(); expect(parentIsDirty).toBeFalsy(); }); it('should return false when dont has parent', () => { const parentIsDirty = dataUnit.isParentDirty(); expect(parentIsDirty).toBeFalsy(); }); }); });