|
|
|
@ -47,11 +47,12 @@ describe('ComponentWrapper', () => { |
|
|
|
let wrapper: ComponentWrapper; |
|
|
|
let firstRecord: DataRecord; |
|
|
|
|
|
|
|
const pagesData = [ |
|
|
|
{ id: 'page1', title: 'Title1' }, |
|
|
|
{ id: 'page2', title: 'Title2' }, |
|
|
|
{ id: 'page3', title: 'Title3' }, |
|
|
|
]; |
|
|
|
const firstPageData = { id: 'page1', title: 'Title1' }; |
|
|
|
const pagesData = [firstPageData, { id: 'page2', title: 'Title2' }, { id: 'page3', title: 'Title3' }]; |
|
|
|
const objectData = { |
|
|
|
page1: { title: 'page1' }, |
|
|
|
page2: { title: 'page2' }, |
|
|
|
}; |
|
|
|
|
|
|
|
beforeEach(() => { |
|
|
|
({ em, dsm } = setupTestEditor()); |
|
|
|
@ -59,7 +60,13 @@ describe('ComponentWrapper', () => { |
|
|
|
|
|
|
|
pagesDataSource = dsm.add({ |
|
|
|
id: 'pagesDataSource', |
|
|
|
records: [{ id: 'pages', data: pagesData }], |
|
|
|
records: [ |
|
|
|
{ id: 'pages', data: pagesData }, |
|
|
|
{ |
|
|
|
id: 'objectData', |
|
|
|
data: objectData, |
|
|
|
}, |
|
|
|
], |
|
|
|
}); |
|
|
|
|
|
|
|
firstRecord = em.DataSources.get('pagesDataSource').getRecord('pages')!; |
|
|
|
@ -74,36 +81,57 @@ describe('ComponentWrapper', () => { |
|
|
|
path, |
|
|
|
}); |
|
|
|
|
|
|
|
const setResolver = (path: string) => { |
|
|
|
wrapper.setDataResolver(createDataResolver(path)); |
|
|
|
wrapper.resolverCurrentItem = 0; |
|
|
|
}; |
|
|
|
|
|
|
|
const appendChildWithTitle = () => |
|
|
|
const appendChildWithTitle = (path: string = 'title') => |
|
|
|
wrapper.append({ |
|
|
|
type: 'default', |
|
|
|
title: { |
|
|
|
type: 'data-variable', |
|
|
|
collectionId: keyRootData, |
|
|
|
path: 'title', |
|
|
|
path, |
|
|
|
}, |
|
|
|
})[0]; |
|
|
|
|
|
|
|
test('sets dataResolver and updates wrapper.page/head collectionsStateMap', () => { |
|
|
|
setResolver('pagesDataSource.pages.data'); |
|
|
|
wrapper.setDataResolver(createDataResolver('pagesDataSource.pages.data')); |
|
|
|
wrapper.resolverCurrentItem = 0; |
|
|
|
const stateMap = wrapper.collectionsStateMap; |
|
|
|
|
|
|
|
expect(stateMap).toHaveProperty(keyRootData); |
|
|
|
expect(wrapper.head.collectionsStateMap).toEqual(stateMap); |
|
|
|
expect(wrapper.head.collectionsStateMap).toEqual({ [keyRootData]: firstPageData }); |
|
|
|
}); |
|
|
|
|
|
|
|
test('children reflect resolved value from dataResolver', () => { |
|
|
|
setResolver('pagesDataSource.pages.data'); |
|
|
|
wrapper.setDataResolver(createDataResolver('pagesDataSource.pages.data')); |
|
|
|
wrapper.resolverCurrentItem = 0; |
|
|
|
const child = appendChildWithTitle(); |
|
|
|
expect(child.collectionsStateMap).toEqual({ [keyRootData]: firstPageData }); |
|
|
|
|
|
|
|
expect(child.get('title')).toBe(pagesData[0].title); |
|
|
|
|
|
|
|
firstRecord.set('data', [{ id: 'page1', title: 'new_title' }]); |
|
|
|
expect(child.get('title')).toBe('new_title'); |
|
|
|
}); |
|
|
|
|
|
|
|
test('children update collectionStateMap on wrapper.setDataResolver', () => { |
|
|
|
const child = appendChildWithTitle(); |
|
|
|
wrapper.setDataResolver(createDataResolver('pagesDataSource.pages.data')); |
|
|
|
wrapper.resolverCurrentItem = 0; |
|
|
|
|
|
|
|
expect(child.collectionsStateMap).toEqual({ [keyRootData]: firstPageData }); |
|
|
|
expect(child.get('title')).toBe(pagesData[0].title); |
|
|
|
|
|
|
|
firstRecord.set('data', [{ id: 'page1', title: 'new_title' }]); |
|
|
|
expect(child.get('title')).toBe('new_title'); |
|
|
|
}); |
|
|
|
|
|
|
|
test('wrapper should handle objects as collection state ', () => { |
|
|
|
wrapper.setDataResolver(createDataResolver('pagesDataSource.objectData.data')); |
|
|
|
wrapper.resolverCurrentItem = 'page1'; |
|
|
|
const child = appendChildWithTitle('title'); |
|
|
|
|
|
|
|
expect(child.collectionsStateMap).toEqual({ [keyRootData]: objectData.page1 }); |
|
|
|
expect(child.get('title')).toBe(objectData.page1.title); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|