Browse Source

update ComponentWrapper tests

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

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

@ -43,46 +43,57 @@ describe('ComponentWrapper', () => {
describe('ComponentWrapper with DataResolver', () => { describe('ComponentWrapper with DataResolver', () => {
let em: EditorModel; let em: EditorModel;
let dsm: DataSourceManager; let dsm: DataSourceManager;
let dataSource: DataSource; let pagesDataSource: DataSource;
let flatPagesDataSource: DataSource;
let wrapper: ComponentWrapper; let wrapper: ComponentWrapper;
let firstRecord: DataRecord;
const pagesData = [
const records = [ { id: 'page1', page: 'page1', title: 'Title1', content: 'content 1' },
{ { id: 'page2', page: 'page2', title: 'Title2', content: 'content 2' },
id: 'pages', { id: 'page3', page: 'page3', title: 'Title3', content: 'content 3' },
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(() => { beforeEach(() => {
({ em, dsm } = setupTestEditor()); ({ em, dsm } = setupTestEditor());
wrapper = em.getWrapper() as ComponentWrapper; wrapper = em.getWrapper() as ComponentWrapper;
dataSource = dsm.add({ pagesDataSource = dsm.add({
id: 'my_data_source_id', id: 'pagesDataSource',
records, records: [{ id: 'pages', data: pagesData }],
}); });
firstRecord = dataSource.getRecord('page1')!; flatPagesDataSource = dsm.add({
id: 'flatPagesDataSource',
records: pagesData,
});
}); });
afterEach(() => { afterEach(() => {
em.destroy(); em.destroy();
}); });
function createDataResolver(path: string): DataVariableProps { const createDataResolver = (path: string): DataVariableProps => ({
return { type: DataVariableType,
type: DataVariableType, path,
path, });
};
} const setResolver = (path: string) => {
wrapper.setDataResolver(createDataResolver(path));
wrapper.resolverCurrentItem = 0;
};
const appendChildWithTitle = () =>
wrapper.append({
type: 'default',
title: {
type: 'data-variable',
collectionId: keyRootData,
path: 'title',
},
})[0];
test('sets dataResolver and updates wrapper.page/head collectionsStateMap', () => { test('sets dataResolver and updates wrapper.page/head collectionsStateMap', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data')); setResolver('pagesDataSource.pages.data');
const stateMap = wrapper.collectionsStateMap; const stateMap = wrapper.collectionsStateMap;
expect(stateMap).toHaveProperty(keyRootData); expect(stateMap).toHaveProperty(keyRootData);
@ -91,20 +102,25 @@ describe('ComponentWrapper', () => {
}); });
test('children reflect resolved value from dataResolver', () => { test('children reflect resolved value from dataResolver', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data')); setResolver('pagesDataSource.pages.data');
const child = wrapper.append({ const child = appendChildWithTitle();
type: 'default',
})[0];
expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap); expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap);
expect(child.collectionsStateMap).toEqual({
[keyRootData]: pagesData[0],
});
expect(child.get('title')).toBe(pagesData[0].title);
}); });
test('updating record propagates to children', () => { test('updating record propagates to children2', () => {
wrapper.setDataResolver(createDataResolver('my_data_source_id.pages.data')); setResolver('flatPagesDataSource');
const child = wrapper.append({ const child = appendChildWithTitle();
type: 'default',
})[0];
expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap); expect(child.collectionsStateMap).toEqual(wrapper.collectionsStateMap);
expect(child.collectionsStateMap).toEqual({
[keyRootData]: pagesData[0],
});
expect(child.get('title')).toBe(pagesData[0].title);
}); });
}); });
}); });

Loading…
Cancel
Save