From 207d2206eb24c4926d30527c7c36d8675073e003 Mon Sep 17 00:00:00 2001 From: Vito Albano Date: Wed, 2 Nov 2016 17:18:15 +0000 Subject: [PATCH] Added start task test --- ng2-components/ng2-activiti-tasklist/index.ts | 4 +- .../activiti-start-task.component.html | 24 ++-- .../activiti-start-task.component.spec.ts | 124 ++++++++++++++++++ .../activiti-start-task.component.ts | 2 +- 4 files changed, 143 insertions(+), 11 deletions(-) create mode 100644 ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.spec.ts diff --git a/ng2-components/ng2-activiti-tasklist/index.ts b/ng2-components/ng2-activiti-tasklist/index.ts index e2494041dc..3e4263e937 100644 --- a/ng2-components/ng2-activiti-tasklist/index.ts +++ b/ng2-components/ng2-activiti-tasklist/index.ts @@ -32,7 +32,7 @@ import { ActivitiComments, ActivitiPeople, ActivitiTaskHeader, - ActivitiStartProcessButton, + ActivitiStartTaskButton, ActivitiPeopleSearch } from './src/components/index'; @@ -50,7 +50,7 @@ export const ACTIVITI_TASKLIST_DIRECTIVES: any[] = [ ActivitiComments, ActivitiPeople, ActivitiTaskHeader, - ActivitiStartProcessButton, + ActivitiStartTaskButton, ActivitiPeopleSearch ]; diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.html b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.html index 837e1730fb..fb369d4477 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.html +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.html @@ -1,19 +1,27 @@ - + - -

{{'START_TASK.DIALOG.TITLE'|translate}}

+ +

{{'START_TASK.DIALOG.TITLE'|translate}}

- +
- - + +
- - + +
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.spec.ts new file mode 100644 index 0000000000..509a898e10 --- /dev/null +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.spec.ts @@ -0,0 +1,124 @@ +/*! + * @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. + */ + +import { + CoreModule, + AlfrescoTranslationService +} from 'ng2-alfresco-core'; +import { ActivitiTaskListService } from '../services/activiti-tasklist.service'; +import { ActivitiStartTaskButton } from './activiti-start-task.component'; +import { TranslationMock } from '../assets/translation.service.mock'; +import { ComponentFixture, TestBed, async } from '@angular/core/testing'; + +declare let jasmine: any; + +describe('Activiti Start Task Component', () => { + + let activitiStartTaskButton: ActivitiStartTaskButton; + let fixture: ComponentFixture; + let element: HTMLElement; + let startTaskButton: HTMLElement; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [CoreModule], + declarations: [ActivitiStartTaskButton], + providers: [ + {provide: AlfrescoTranslationService, useClass: TranslationMock}, + ActivitiTaskListService] + }).compileComponents().then(() => { + fixture = TestBed.createComponent(ActivitiStartTaskButton); + activitiStartTaskButton = fixture.componentInstance; + element = fixture.nativeElement; + fixture.detectChanges(); + startTaskButton = element.querySelector('#start-task-button'); + }); + })); + + beforeEach(() => { + jasmine.Ajax.install(); + }); + + afterEach(() => { + jasmine.Ajax.uninstall(); + }); + + it('should show start task button', () => { + expect(element.querySelector('#start-task-button')).toBeDefined(); + expect(element.querySelector('#start-task-button')).not.toBeNull(); + expect(element.querySelector('#start-task-button').textContent).toContain('START_TASK.BUTTON'); + }); + + it('should show start dialog on press button', () => { + startTaskButton.click(); + expect(element.querySelector('#start-task-dialog')).not.toBeNull(); + expect(element.querySelector('#start-task-dialog').getAttribute('open')).not.toBeNull(); + expect(element.querySelector('#start-task-dialog-title')).not.toBeNull(); + expect(element.querySelector('#start-task-dialog-title').textContent).toContain('START_TASK.DIALOG.TITLE'); + }); + + it('should close start dialog on cancel button', () => { + startTaskButton.click(); + expect(element.querySelector('#start-task-dialog')).not.toBeNull(); + expect(element.querySelector('#start-task-dialog').getAttribute('open')).not.toBeNull(); + let cancelButton = element.querySelector('#button-cancel'); + cancelButton.click(); + expect(element.querySelector('#start-task-dialog').getAttribute('open')).toBeNull(); + }); + + it('should create new task when start is clicked', () => { + activitiStartTaskButton.onSuccess.subscribe(() => { + expect(element.querySelector('#start-task-dialog').getAttribute('open')).toBeNull(); + }); + let createTaskButton = element.querySelector('#button-start'); + startTaskButton.click(); + activitiStartTaskButton.name = 'fake-name'; + createTaskButton.click(); + jasmine.Ajax.requests.mostRecent().respondWith({ + 'status': 200 + }); + }); + + it('alert message is showed on start error', () => { + spyOn(window, 'alert'); + activitiStartTaskButton.onSuccess.subscribe(() => { + expect(window.alert).toHaveBeenCalledWith('An error occurred while trying to add the task'); + }); + let createTaskButton = element.querySelector('#button-start'); + startTaskButton.click(); + activitiStartTaskButton.name = 'fake-name'; + createTaskButton.click(); + jasmine.Ajax.requests.mostRecent().respondWith({ + 'status': 403 + }); + }); + + it('should send on success event when the task is started', () => { + activitiStartTaskButton.onSuccess.subscribe((res) => { + expect(res).toBeDefined(); + }); + let createTaskButton = element.querySelector('#button-start'); + startTaskButton.click(); + activitiStartTaskButton.name = 'fake-name'; + createTaskButton.click(); + jasmine.Ajax.requests.mostRecent().respondWith({ + 'status': 200, + contentType: 'json', + responseText: {} + }); + }); +}); diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.ts index 2f0a8f7c60..f31b0e3ede 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-start-task.component.ts @@ -29,7 +29,7 @@ declare let dialogPolyfill: any; templateUrl: './activiti-start-task.component.html', styleUrls: ['./activiti-start-task.component.css'] }) -export class ActivitiStartProcessButton { +export class ActivitiStartTaskButton { @Input() appId: string;