Canh Ngo pushed to branch feature/cmng-psp1-CHANNELMGR-467 at cms-community / hippo-addon-channel-manager
Commits: 1c97783d by Canh Ngo at 2016-03-17T14:51:07+01:00 CHANNELMGR-467: Renamed ComponentRenderingService to ExtJsHandlerService Moved ExtJsHandlerService#renderComponent() to PageStructureService to align with PageStructureService#renderContainer() Due to only listening to the 'render-component' event from ExtJS, the ComponentRenderingService should be renamed properly. - - - - - 6 changed files: - − frontend-ng/src/angularjs/channel/page/componentRendering.service.fixture.html - frontend-ng/src/angularjs/channel/page/componentRendering.service.js → frontend-ng/src/angularjs/channel/page/extJsHandler.service.js - frontend-ng/src/angularjs/channel/page/componentRendering.service.spec.js → frontend-ng/src/angularjs/channel/page/extJsHandler.service.spec.js - frontend-ng/src/angularjs/channel/page/page.js - frontend-ng/src/angularjs/channel/page/page.run.js - frontend-ng/src/angularjs/channel/page/pageStructure.service.js Changes: ===================================== frontend-ng/src/angularjs/channel/page/componentRendering.service.fixture.html deleted ===================================== --- a/frontend-ng/src/angularjs/channel/page/componentRendering.service.fixture.html +++ /dev/null @@ -1,18 +0,0 @@ -<!-- - ~ Copyright 2016 Hippo B.V. (http://www.onehippo.com) - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License. - --> - -<div id="component"> -</div> ===================================== frontend-ng/src/angularjs/channel/page/componentRendering.service.js → frontend-ng/src/angularjs/channel/page/extJsHandler.service.js ===================================== --- a/frontend-ng/src/angularjs/channel/page/componentRendering.service.js +++ b/frontend-ng/src/angularjs/channel/page/extJsHandler.service.js @@ -14,30 +14,16 @@ * limitations under the License. */ -export class ComponentRenderingService { +export class ExtJsHandlerService { - constructor($http, $log, CmsService, PageStructureService, RenderingService) { + constructor(CmsService, PageStructureService) { 'ngInject'; - this.$http = $http; - this.$log = $log; this.CmsService = CmsService; this.PageStructureService = PageStructureService; - this.RenderingService = RenderingService; } initialize() { - this.CmsService.subscribe('render-component', this._renderComponent, this); - } - - _renderComponent(componentId, propertiesMap) { - const component = this.PageStructureService.getComponentById(componentId); - if (component) { - this.RenderingService.fetchComponentMarkup(component, propertiesMap).then((response) => { - this.PageStructureService.updateComponent(component, response.data); - }); - } else { - this.$log.warn(`Cannot render unknown component '${componentId}'`); - } + this.CmsService.subscribe('render-component', this.PageStructureService.renderComponent.bind(this.PageStructureService), this); } } ===================================== frontend-ng/src/angularjs/channel/page/componentRendering.service.spec.js → frontend-ng/src/angularjs/channel/page/extJsHandler.service.spec.js ===================================== --- a/frontend-ng/src/angularjs/channel/page/componentRendering.service.spec.js +++ b/frontend-ng/src/angularjs/channel/page/extJsHandler.service.spec.js @@ -14,50 +14,23 @@ * limitations under the License. */ -describe('ComponentRenderingService', () => { +describe('ExtJsHandlerService', () => { 'use strict'; let PageStructureService; - let RenderingService; - let $log; - let $q; beforeEach(() => { module('hippo-cm.channel.page'); - inject((_$httpBackend_, _$q_, _$log_, _PageStructureService_, _RenderingService_) => { - $log = _$log_; - $q = _$q_; + inject((_PageStructureService_) => { PageStructureService = _PageStructureService_; - RenderingService = _RenderingService_; }); }); - beforeEach(() => { - jasmine.getFixtures().load('channel/page/componentRendering.service.fixture.html'); - }); - - it('renders a component', () => { - const component = jasmine.createSpyObj('component', ['getJQueryElement']); - const iframeElement = $j('#component'); - - component.getJQueryElement.and.returnValue(iframeElement); - spyOn(PageStructureService, 'getComponent').and.returnValue(component); - spyOn(PageStructureService, 'updateComponent'); - spyOn(RenderingService, 'fetchComponentMarkup').and.returnValue($q.when('{ data: <div>component markup</div> }')); - + it('handles the render event from ExtJS', () => { + spyOn(PageStructureService, 'renderComponent'); window.CMS_TO_APP.publish('render-component', '1234', { foo: 1, bar: 'a:b' }); - expect(RenderingService.fetchComponentMarkup).toHaveBeenCalledWith(component, { foo: 1, bar: 'a:b' }); - expect(PageStructureService.replaceComponent).toHaveBeenCalledWith(component, '<div>component markup</div>'); - }); - - it('logs a warning when the component to render cannot be found', () => { - spyOn(PageStructureService, 'getComponent').and.returnValue(null); - spyOn($log, 'warn'); - - window.CMS_TO_APP.publish('render-component', 'unknown-component-id', {}); - - expect($log.warn).toHaveBeenCalled(); + expect(PageStructureService.renderComponent).toHaveBeenCalledWith('1234', { foo: 1, bar: 'a:b' }); }); }); ===================================== frontend-ng/src/angularjs/channel/page/page.js ===================================== --- a/frontend-ng/src/angularjs/channel/page/page.js +++ b/frontend-ng/src/angularjs/channel/page/page.js @@ -15,7 +15,7 @@ */ import { RenderingService } from './rendering.service'; -import { ComponentRenderingService } from './componentRendering.service'; +import { ExtJsHandlerService } from './extJsHandler.service'; import { PageMetaDataService } from './pageMetaData.service'; import { PageStructureService } from './pageStructure.service'; import { run } from './page.run'; @@ -23,7 +23,7 @@ import { run } from './page.run'; export const channelPageModule = angular .module('hippo-cm.channel.page', []) .service('RenderingService', RenderingService) - .service('ComponentRenderingService', ComponentRenderingService) + .service('ExtJsHandlerService', ExtJsHandlerService) .service('PageMetaDataService', PageMetaDataService) .service('PageStructureService', PageStructureService) .run(run); ===================================== frontend-ng/src/angularjs/channel/page/page.run.js ===================================== --- a/frontend-ng/src/angularjs/channel/page/page.run.js +++ b/frontend-ng/src/angularjs/channel/page/page.run.js @@ -14,8 +14,8 @@ * limitations under the License. */ -export function run(ComponentRenderingService) { +export function run(ExtJsHandlerService) { 'ngInject'; - ComponentRenderingService.initialize(); + ExtJsHandlerService.initialize(); } ===================================== frontend-ng/src/angularjs/channel/page/pageStructure.service.js ===================================== --- a/frontend-ng/src/angularjs/channel/page/pageStructure.service.js +++ b/frontend-ng/src/angularjs/channel/page/pageStructure.service.js @@ -144,10 +144,21 @@ export class PageStructureService { }); } + renderComponent(componentId, propertiesMap) { + const component = this.getComponentById(componentId); + if (component) { + this.RenderingService.fetchComponentMarkup(component, propertiesMap).then((response) => { + this._updateComponent(component, response.data); + }); + } else { + this.$log.warn(`Cannot render unknown component '${componentId}'`); + } + } + /** * Update the component with the new markup */ - updateComponent(component, newMarkup) { + _updateComponent(component, newMarkup) { const jQueryNodeCollection = component.replaceDOM(newMarkup); this._replaceComponent(component, this._createComponent(jQueryNodeCollection, component.getContainer())); this.OverlaySyncService.syncIframe(); View it on GitLab: https://code.onehippo.org/cms-community/hippo-addon-channel-manager/commit/1c97783d9bf0324f348ede9afb34674a9902f429
_______________________________________________ Hippocms-svn mailing list Hippocms-svn@lists.onehippo.org https://lists.onehippo.org/mailman/listinfo/hippocms-svn