diff --git a/ng2-components/ng2-activiti-diagrams/src/assets/diagramIntermediate.mock.ts b/ng2-components/ng2-activiti-diagrams/src/assets/diagramIntermediate.mock.ts new file mode 100644 index 0000000000..600156fd01 --- /dev/null +++ b/ng2-components/ng2-activiti-diagrams/src/assets/diagramIntermediate.mock.ts @@ -0,0 +1,60 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * 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. + */ + +export let intermediateCatchingTimeEvent = { + id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', + type: 'IntermediateCatchEvent', + width: 31, + height: 31, + x: 40, + y: 30, + properties: [{}], + eventDefinition: {type: 'timer'} +}; + +export let intermediateCatchingErrorEvent = { + id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', + type: 'IntermediateCatchEvent', + width: 31, + height: 31, + x: 40, + y: 30, + properties: [{}], + eventDefinition: {type: 'error'} +}; + +export let intermediateCatchingSignalEvent = { + id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', + type: 'IntermediateCatchEvent', + width: 31, + height: 31, + x: 40, + y: 30, + properties: [{}], + eventDefinition: {type: 'signal'} +}; + +export let intermediateCatchingMessageEvent = { + id: 'sid-C05B7CB7-1CFD-4AE4-9E01-C2C91E35E5A7', + type: 'IntermediateCatchEvent', + width: 31, + height: 31, + x: 40, + y: 30, + properties: [{}], + eventDefinition: {type: 'message'} +}; diff --git a/ng2-components/ng2-activiti-diagrams/src/components/diagram.component.spec.ts b/ng2-components/ng2-activiti-diagrams/src/components/diagram.component.spec.ts index 3e6a595c76..9862214dcc 100644 --- a/ng2-components/ng2-activiti-diagrams/src/components/diagram.component.spec.ts +++ b/ng2-components/ng2-activiti-diagrams/src/components/diagram.component.spec.ts @@ -27,6 +27,7 @@ import { DebugElement } from '@angular/core'; import * as diagramsEventsMock from '../assets/diagramEvents.mock'; import * as diagramsActivitiesMock from '../assets/diagramActivities.mock'; import * as diagramsGatewaysMock from '../assets/diagramGateways.mock'; +import * as intermediateCatchingMock from '../assets/diagramIntermediate.mock'; declare let jasmine: any; @@ -641,8 +642,15 @@ describe('Test ng2-activiti-diagrams ', () => { let shape: any = element.querySelector('diagram-event-gateway > diagram-gateway > raphael-rhombus'); expect(shape).not.toBeNull(); - let shape1: any = element.querySelector('diagram-event-gateway > raphael-circle'); + let shape1: any = element.querySelector('diagram-event-gateway'); expect(shape1).not.toBeNull(); + expect(shape1.children.length).toBe(4); + + let outerCircle = shape1.children[1]; + expect(outerCircle.localName).toEqual('raphael-circle'); + + let innerCircle = shape1.children[2]; + expect(innerCircle.localName).toEqual('raphael-circle'); let shape2: any = element.querySelector('diagram-event-gateway > raphael-pentagon'); expect(shape2).not.toBeNull(); @@ -657,4 +665,132 @@ describe('Test ng2-activiti-diagrams ', () => { }); })); }); + + describe('Diagrams component Intermediate Catching events: ', () => { + beforeEach(() => { + jasmine.Ajax.install(); + component.processDefinitionId = 'fakeprocess:24:38399'; + component.metricPercentages = {startEvent: 0}; + }); + + afterEach(() => { + jasmine.Ajax.uninstall(); + }); + + it('Should render the Intermediate catching time event', async(() => { + component.onSuccess.subscribe((res) => { + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(res).not.toBeNull(); + let shape: any = element.querySelector('diagram-intermediate-catching-event'); + expect(shape).not.toBeNull(); + expect(shape.children.length).toBe(3); + + let outerCircle = shape.children[0]; + expect(outerCircle.localName).toEqual('raphael-circle'); + + let innerCircle = shape.children[1]; + expect(innerCircle.localName).toEqual('raphael-circle'); + + let iconShape: any = element.querySelector('diagram-intermediate-catching-event > diagram-container-icon-event >' + + ' div > div > diagram-icon-timer'); + expect(iconShape).not.toBeNull(); + }); + }); + component.ngOnChanges(); + let resp = {elements: [intermediateCatchingMock.intermediateCatchingTimeEvent]}; + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 200, + contentType: 'json', + responseText: resp + }); + })); + + it('Should render the Intermediate catching error event', async(() => { + component.onSuccess.subscribe((res) => { + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(res).not.toBeNull(); + let shape: any = element.querySelector('diagram-intermediate-catching-event'); + expect(shape).not.toBeNull(); + expect(shape.children.length).toBe(3); + + let outerCircle = shape.children[0]; + expect(outerCircle.localName).toEqual('raphael-circle'); + + let innerCircle = shape.children[1]; + expect(innerCircle.localName).toEqual('raphael-circle'); + + let iconShape: any = element.querySelector('diagram-intermediate-catching-event > diagram-container-icon-event >' + + ' div > div > diagram-icon-error'); + expect(iconShape).not.toBeNull(); + }); + }); + component.ngOnChanges(); + let resp = {elements: [intermediateCatchingMock.intermediateCatchingErrorEvent]}; + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 200, + contentType: 'json', + responseText: resp + }); + })); + + it('Should render the Intermediate catching signal event', async(() => { + component.onSuccess.subscribe((res) => { + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(res).not.toBeNull(); + let shape: any = element.querySelector('diagram-intermediate-catching-event'); + expect(shape).not.toBeNull(); + expect(shape.children.length).toBe(3); + + let outerCircle = shape.children[0]; + expect(outerCircle.localName).toEqual('raphael-circle'); + + let innerCircle = shape.children[1]; + expect(innerCircle.localName).toEqual('raphael-circle'); + + let iconShape: any = element.querySelector('diagram-intermediate-catching-event > diagram-container-icon-event >' + + ' div > div > diagram-icon-signal'); + expect(iconShape).not.toBeNull(); + }); + }); + component.ngOnChanges(); + let resp = {elements: [intermediateCatchingMock.intermediateCatchingSignalEvent]}; + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 200, + contentType: 'json', + responseText: resp + }); + })); + + it('Should render the Intermediate catching signal message', async(() => { + component.onSuccess.subscribe((res) => { + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(res).not.toBeNull(); + let shape: any = element.querySelector('diagram-intermediate-catching-event'); + expect(shape).not.toBeNull(); + expect(shape.children.length).toBe(3); + + let outerCircle = shape.children[0]; + expect(outerCircle.localName).toEqual('raphael-circle'); + + let innerCircle = shape.children[1]; + expect(innerCircle.localName).toEqual('raphael-circle'); + + let iconShape: any = element.querySelector('diagram-intermediate-catching-event > diagram-container-icon-event >' + + ' div > div > diagram-icon-message'); + expect(iconShape).not.toBeNull(); + }); + }); + component.ngOnChanges(); + let resp = {elements: [intermediateCatchingMock.intermediateCatchingMessageEvent]}; + jasmine.Ajax.requests.mostRecent().respondWith({ + status: 200, + contentType: 'json', + responseText: resp + }); + })); + }); });