Browse Source

Add tests for component wrapper

pages-datasources
mohamedsalem401 1 year ago
parent
commit
cc7b2dea2a
  1. 73
      packages/core/test/specs/dom_components/model/ComponentWrapper.ts

73
packages/core/test/specs/dom_components/model/ComponentWrapper.ts

@ -1,6 +1,11 @@
import { DataSourceManager, DataSource, DataRecord } from '../../../../src';
import { DataVariableProps, DataVariableType } from '../../../../src/data_sources/model/DataVariable';
import Component from '../../../../src/dom_components/model/Component'; import Component from '../../../../src/dom_components/model/Component';
import ComponentHead from '../../../../src/dom_components/model/ComponentHead'; import ComponentHead from '../../../../src/dom_components/model/ComponentHead';
import ComponentWrapper from '../../../../src/dom_components/model/ComponentWrapper';
import Editor from '../../../../src/editor'; import Editor from '../../../../src/editor';
import EditorModel from '../../../../src/editor/model/Editor';
import { setupTestEditor } from '../../../common';
describe('ComponentWrapper', () => { describe('ComponentWrapper', () => {
let em: Editor; let em: Editor;
@ -33,4 +38,72 @@ describe('ComponentWrapper', () => {
expect(newPageComponent?.head.cid).not.toEqual(originalComponent?.head.cid); expect(newPageComponent?.head.cid).not.toEqual(originalComponent?.head.cid);
}); });
}); });
describe('ComponentWrapper with DataResolver', () => {
let em: EditorModel;
let dsm: DataSourceManager;
let dataSource: DataSource;
let wrapper: ComponentWrapper;
let firstRecord: DataRecord;
const records = [
{
id: 'pages',
data: [
{ id: 'page1', page: 'page1', title: 'Title1', content: 'content 1' },
{ id: 'page2', page: 'page2', title: 'Title2', content: 'content 2' },
{ id: 'page3', page: 'page3', title: 'Title3', content: 'content 3' },
],
},
];
beforeEach(() => {
({ em, dsm } = setupTestEditor());
wrapper = em.getWrapper() as ComponentWrapper;
dataSource = dsm.add({
id: 'my_data_source_id',
records,
});
firstRecord = dataSource.getRecord('page1')!;
});
afterEach(() => {
em.destroy();
});
function createDataResolver(path: string): DataVariableProps {
return {
type: DataVariableType,
path,
};
}
test('sets dataResolver and updates wrapper.page/head collectionsStateMap', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data'));
const stateMap = wrapper.collectionsStateMap;
expect(stateMap).toHaveProperty('__pages');
expect(wrapper.page?.collectionsStateMap).toEqual(stateMap);
expect(wrapper.head.collectionsStateMap).toEqual(stateMap);
});
test('children reflect resolved value from dataResolver', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data'));
const child = wrapper.append({
type: 'default',
})[0];
expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap);
});
test('updating record propagates to children', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data'));
const child = wrapper.append({
type: 'default',
})[0];
expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap);
});
});
}); });

Loading…
Cancel
Save