diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.html b/demo-shell-ng2/app/components/activiti/activiti-demo.component.html
index 46e3349d22..a5a3a62348 100644
--- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.html
+++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.html
@@ -61,7 +61,8 @@
[taskId]="currentTaskId"
(formCompleted)="onFormCompleted($event)"
(formContentClicked)="onFormContentClick($event)"
- (taskCreated)="onTaskCreated($event)">
+ (taskCreated)="onTaskCreated($event)"
+ (taskDeleted)="onTaskDeleted($event)">
diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
index 147ef8ee6a..e74a6390d2 100644
--- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
+++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
@@ -264,6 +264,10 @@ export class ActivitiDemoComponent implements AfterViewInit {
this.taskList.reload();
}
+ onTaskDeleted(data: any) {
+ this.taskList.reload();
+ }
+
ngAfterViewInit() {
// workaround for MDL issues with dynamic components
if (componentHandler) {
diff --git a/ng2-components/ng2-activiti-tasklist/src/assets/tasklist-service.mock.ts b/ng2-components/ng2-activiti-tasklist/src/assets/tasklist-service.mock.ts
new file mode 100644
index 0000000000..810bfd5e47
--- /dev/null
+++ b/ng2-components/ng2-activiti-tasklist/src/assets/tasklist-service.mock.ts
@@ -0,0 +1,226 @@
+/*!
+ * @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 {
+ FilterRepresentationModel,
+ AppDefinitionRepresentationModel
+} from '../models/filter.model';
+
+export var fakeFilters = {
+ size: 2, total: 2, start: 0,
+ data: [
+ new AppDefinitionRepresentationModel(
+ {
+ id: '1', name: 'FakeInvolvedTasks', recent: false, icon: 'glyphicon-align-left',
+ filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-involved' }
+ }
+ ),
+ {
+ id: '2', name: 'FakeMyTasks', recent: false, icon: 'glyphicon-align-left',
+ filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-assignee' }
+ }
+ ]
+};
+
+export var fakeAppFilter = {
+ size: 1, total: 1, start: 0,
+ data: [
+ {
+ id: 1, name: 'FakeInvolvedTasks', recent: false, icon: 'glyphicon-align-left',
+ filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-involved' }
+ }
+ ]
+};
+
+export var fakeApps = {
+ size: 2, total: 2, start: 0,
+ data: [
+ {
+ id: 1, defaultAppId: null, name: 'Sales-Fakes-App', description: 'desc-fake1', modelId: 22,
+ theme: 'theme-1-fake', icon: 'glyphicon-asterisk', 'deploymentId': '111', 'tenantId': null
+ },
+ {
+ id: 2, defaultAppId: null, name: 'health-care-Fake', description: 'desc-fake2', modelId: 33,
+ theme: 'theme-2-fake', icon: 'glyphicon-asterisk', 'deploymentId': '444', 'tenantId': null
+ }
+ ]
+};
+
+export var fakeFilter = {
+ sort: 'created-desc', text: '', state: 'open', assignment: 'fake-assignee'
+};
+
+export var fakeFilterWithProcessDefinitionKey = {
+ sort: 'created-desc', text: '', state: 'open', assignment: 'fake-assignee', processDefinitionKey: '1'
+};
+
+export var fakeUser = { id: 1, email: 'fake-email@dom.com', firstName: 'firstName', lastName: 'lastName' };
+
+export var fakeTaskList = {
+ size: 1, total: 1, start: 0,
+ data: [
+ {
+ id: '1', name: 'FakeNameTask', description: null, category: null,
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ }
+ ]
+};
+
+export var fakeTaskListDifferentProcessDefinitionKey = {
+ size: 1, total: 1, start: 0,
+ data: [
+ {
+ id: '1', name: 'FakeNameTask', description: null, category: null,
+ assignee: fakeUser,
+ processDefinitionKey: '1',
+ created: '2016-07-15T11:19:17.440+0000'
+ },
+ {
+ id: '2', name: 'FakeNameTask2', description: null, category: null,
+ assignee: fakeUser,
+ processDefinitionKey: '2',
+ created: '2016-07-15T11:19:17.440+0000'
+ }
+ ]
+};
+
+export var secondFakeTaskList = {
+ size: 1, total: 1, start: 0,
+ data: [
+ {
+ id: '200', name: 'FakeNameTask', description: null, category: null,
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ }
+ ]
+};
+
+export var fakeErrorTaskList = {
+ error: 'wrong request'
+};
+
+export var fakeTaskDetails = { id: '999', name: 'fake-task-name', formKey: '99', assignee: fakeUser };
+
+export var fakeTasksComment = {
+ size: 2, total: 2, start: 0,
+ data: [
+ {
+ id: 1, message: 'fake-message-1', created: '', createdBy: fakeUser
+ },
+ {
+ id: 2, message: 'fake-message-2', created: '', createdBy: fakeUser
+ }
+ ]
+};
+
+export var fakeTasksChecklist = {
+ size: 1, total: 1, start: 0,
+ data: [
+ {
+ id: 1, name: 'FakeCheckTask1', description: null, category: null,
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ },
+ {
+ id: 2, name: 'FakeCheckTask2', description: null, category: null,
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ }
+ ]
+};
+
+export var fakeRepresentationFilter1: FilterRepresentationModel = new FilterRepresentationModel({
+ appId: 1,
+ name: 'CONTAIN FILTER',
+ recent: true,
+ icon: 'glyphicon-align-left',
+ filter: {
+ processDefinitionId: null,
+ processDefinitionKey: null,
+ name: null,
+ state: 'open',
+ sort: 'created-desc',
+ assignment: 'involved',
+ dueAfter: null,
+ dueBefore: null
+ }
+});
+
+export var fakeRepresentationFilter2: FilterRepresentationModel = new FilterRepresentationModel({
+ appId: 2,
+ name: 'NO TASK FILTER',
+ recent: false,
+ icon: 'glyphicon-inbox',
+ filter: {
+ processDefinitionId: null,
+ processDefinitionKey: null,
+ name: null,
+ state: 'open',
+ sort: 'created-desc',
+ assignment: 'assignee',
+ dueAfter: null,
+ dueBefore: null
+ }
+});
+
+export var fakeAppPromise = new Promise(function (resolve, reject) {
+ resolve(fakeAppFilter);
+});
+
+export var fakeFormList = {
+ size: 2,
+ total: 2,
+ start: 0,
+ data: [{
+ id: 1,
+ name: 'form with all widgets',
+ description: '',
+ createdBy: 2,
+ createdByFullName: 'Admin Admin',
+ lastUpdatedBy: 2,
+ lastUpdatedByFullName: 'Admin Admin',
+ lastUpdated: 1491400951205,
+ latestVersion: true,
+ version: 4,
+ comment: null,
+ stencilSet: null,
+ referenceId: null,
+ modelType: 2,
+ favorite: null,
+ permission: 'write',
+ tenantId: null
+ }, {
+ id: 2,
+ name: 'uppy',
+ description: '',
+ createdBy: 2,
+ createdByFullName: 'Admin Admin',
+ lastUpdatedBy: 2,
+ lastUpdatedByFullName: 'Admin Admin',
+ lastUpdated: 1490951054477,
+ latestVersion: true,
+ version: 2,
+ comment: null,
+ stencilSet: null,
+ referenceId: null,
+ modelType: 2,
+ favorite: null,
+ permission: 'write',
+ tenantId: null
+ }]
+};
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-checklist.component.html b/ng2-components/ng2-activiti-tasklist/src/components/activiti-checklist.component.html
index 1f74274e2b..108de506ea 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-checklist.component.html
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-checklist.component.html
@@ -7,9 +7,9 @@
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
index 88b0b24d7a..c926163d75 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
@@ -96,6 +96,9 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
@Output()
taskCreated: EventEmitter = new EventEmitter();
+ @Output()
+ taskDeleted: EventEmitter = new EventEmitter();
+
@Output()
onError: EventEmitter = new EventEmitter();
@@ -258,6 +261,10 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
this.taskCreated.emit(task);
}
+ onChecklistTaskDeleted(taskId: string) {
+ this.taskDeleted.emit(taskId);
+ }
+
onFormError(error: any) {
this.errorDialog.nativeElement.showModal();
this.onError.emit(error);
diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
index cc15443832..ae979abe6f 100644
--- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts
@@ -15,173 +15,65 @@
* limitations under the License.
*/
-import { TestBed, async } from '@angular/core/testing';
-import { CoreModule } from 'ng2-alfresco-core';
+import { ReflectiveInjector } from '@angular/core';
+import { async } from '@angular/core/testing';
+import {
+ AlfrescoAuthenticationService,
+ AlfrescoSettingsService,
+ AlfrescoApiService,
+ StorageService,
+ LogService
+} from 'ng2-alfresco-core';
import { ActivitiTaskListService } from './activiti-tasklist.service';
import { TaskDetailsModel } from '../models/task-details.model';
import {
FilterRepresentationModel,
- AppDefinitionRepresentationModel,
TaskQueryRequestRepresentationModel
} from '../models/filter.model';
import { Comment } from '../models/comment.model';
+import {
+ fakeFilters,
+ fakeAppPromise,
+ fakeAppFilter,
+ fakeFilter,
+ fakeTaskList,
+ fakeErrorTaskList,
+ fakeTasksComment,
+ fakeTasksChecklist,
+ fakeTaskDetails,
+ fakeUser,
+ fakeApps,
+ fakeRepresentationFilter1,
+ secondFakeTaskList,
+ fakeRepresentationFilter2,
+ fakeFormList,
+ fakeTaskListDifferentProcessDefinitionKey,
+ fakeFilterWithProcessDefinitionKey
+} from '../assets/tasklist-service.mock';
declare let jasmine: any;
-describe('ActivitiTaskListService', () => {
-
- let fakeFilters = {
- size: 2, total: 2, start: 0,
- data: [
- new AppDefinitionRepresentationModel(
- {
- id: '1', name: 'FakeInvolvedTasks', recent: false, icon: 'glyphicon-align-left',
- filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-involved' }
- }
- ),
- {
- id: '2', name: 'FakeMyTasks', recent: false, icon: 'glyphicon-align-left',
- filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-assignee' }
- }
- ]
- };
-
- let fakeAppFilter = {
- size: 1, total: 1, start: 0,
- data: [
- {
- id: 1, name: 'FakeInvolvedTasks', recent: false, icon: 'glyphicon-align-left',
- filter: { sort: 'created-desc', name: '', state: 'open', assignment: 'fake-involved' }
- }
- ]
- };
-
- let fakeApps = {
- size: 2, total: 2, start: 0,
- data: [
- {
- id: 1, defaultAppId: null, name: 'Sales-Fakes-App', description: 'desc-fake1', modelId: 22,
- theme: 'theme-1-fake', icon: 'glyphicon-asterisk', 'deploymentId': '111', 'tenantId': null
- },
- {
- id: 2, defaultAppId: null, name: 'health-care-Fake', description: 'desc-fake2', modelId: 33,
- theme: 'theme-2-fake', icon: 'glyphicon-asterisk', 'deploymentId': '444', 'tenantId': null
- }
- ]
- };
-
- let fakeFilter = {
- sort: 'created-desc', text: '', state: 'open', assignment: 'fake-assignee'
- };
-
- let fakeUser = { id: 1, email: 'fake-email@dom.com', firstName: 'firstName', lastName: 'lastName' };
-
- let fakeTaskList = {
- size: 1, total: 1, start: 0,
- data: [
- {
- id: '1', name: 'FakeNameTask', description: null, category: null,
- assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- }
- ]
- };
-
- let secondFakeTaskList = {
- size: 1, total: 1, start: 0,
- data: [
- {
- id: '200', name: 'FakeNameTask', description: null, category: null,
- assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- }
- ]
- };
-
- let fakeErrorTaskList = {
- error: 'wrong request'
- };
-
- let fakeTaskDetails = { id: '999', name: 'fake-task-name', formKey: '99', assignee: fakeUser };
-
- let fakeTasksComment = {
- size: 2, total: 2, start: 0,
- data: [
- {
- id: 1, message: 'fake-message-1', created: '', createdBy: fakeUser
- },
- {
- id: 2, message: 'fake-message-2', created: '', createdBy: fakeUser
- }
- ]
- };
-
- let fakeTasksChecklist = {
- size: 1, total: 1, start: 0,
- data: [
- {
- id: 1, name: 'FakeCheckTask1', description: null, category: null,
- assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- },
- {
- id: 2, name: 'FakeCheckTask2', description: null, category: null,
- assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- }
- ]
- };
-
- let fakeRepresentationFilter1: FilterRepresentationModel = new FilterRepresentationModel({
- appId: 1,
- name: 'CONTAIN FILTER',
- recent: true,
- icon: 'glyphicon-align-left',
- filter: {
- processDefinitionId: null,
- processDefinitionKey: null,
- name: null,
- state: 'open',
- sort: 'created-desc',
- assignment: 'involved',
- dueAfter: null,
- dueBefore: null
- }
- });
-
- let fakeRepresentationFilter2: FilterRepresentationModel = new FilterRepresentationModel({
- appId: 2,
- name: 'NO TASK FILTER',
- recent: false,
- icon: 'glyphicon-inbox',
- filter: {
- processDefinitionId: null,
- processDefinitionKey: null,
- name: null,
- state: 'open',
- sort: 'created-desc',
- assignment: 'assignee',
- dueAfter: null,
- dueBefore: null
- }
- });
-
- let fakeAppPromise = new Promise(function (resolve, reject) {
- resolve(fakeAppFilter);
- });
+describe('Activiti TaskList Service', () => {
let service: ActivitiTaskListService;
+ let injector;
+
+ beforeEach(() => {
+ injector = ReflectiveInjector.resolveAndCreate([
+ AlfrescoSettingsService,
+ AlfrescoApiService,
+ AlfrescoAuthenticationService,
+ ActivitiTaskListService,
+ StorageService,
+ LogService
+ ]);
+ });
+
+ beforeEach(() => {
+ service = injector.get(ActivitiTaskListService);
+ });
beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [
- CoreModule.forRoot()
- ],
- providers: [
- ActivitiTaskListService
- ]
- });
- service = TestBed.get(ActivitiTaskListService);
jasmine.Ajax.install();
});
@@ -189,461 +81,518 @@ describe('ActivitiTaskListService', () => {
jasmine.Ajax.uninstall();
});
- it('should return the task list filters', (done) => {
- service.getTaskListFilters().subscribe(
- (res) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(2);
- expect(res[0].name).toEqual('FakeInvolvedTasks');
- expect(res[1].name).toEqual('FakeMyTasks');
- done();
- }
- );
+ describe('Content tests', () => {
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeFilters)
- });
- });
+ it('should return the task list filters', (done) => {
+ service.getTaskListFilters().subscribe(
+ (res) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(2);
+ expect(res[0].name).toEqual('FakeInvolvedTasks');
+ expect(res[1].name).toEqual('FakeMyTasks');
+ done();
+ }
+ );
- it('should call the api withthe appId', (done) => {
- spyOn(service, 'callApiTaskFilters').and.returnValue((fakeAppPromise));
-
- let appId = '1';
- service.getTaskListFilters(appId).subscribe(
- (res) => {
- expect(service.callApiTaskFilters).toHaveBeenCalledWith(appId);
- done();
- }
- );
- });
-
- it('should return the app filter by id', (done) => {
- let appId = '1';
- service.getTaskListFilters(appId).subscribe(
- (res) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(1);
- expect(res[0].name).toEqual('FakeInvolvedTasks');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeAppFilter)
- });
- });
-
- it('should return the task list filtered', (done) => {
- service.getTasks(fakeFilter).subscribe(
- res => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(1);
- expect(res[0].name).toEqual('FakeNameTask');
- expect(res[0].assignee.email).toEqual('fake-email@dom.com');
- expect(res[0].assignee.firstName).toEqual('firstName');
- expect(res[0].assignee.lastName).toEqual('lastName');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTaskList)
- });
- });
-
- it('should throw an exception when the response is wrong', () => {
- service.getTasks(fakeFilter).subscribe(
- (res) => {
- },
- (err: any) => {
- expect(err).toBeDefined();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 404,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeErrorTaskList)
- });
- });
-
- it('should return the task details ', (done) => {
- service.getTaskDetails('999').subscribe(
- (res: TaskDetailsModel) => {
- expect(res).toBeDefined();
- expect(res.id).toEqual('999');
- expect(res.name).toEqual('fake-task-name');
- expect(res.formKey).toEqual('99');
- expect(res.assignee).toBeDefined();
- expect(res.assignee.email).toEqual('fake-email@dom.com');
- expect(res.assignee.firstName).toEqual('firstName');
- expect(res.assignee.lastName).toEqual('lastName');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTaskDetails)
- });
- });
-
- it('should return the tasks comments ', (done) => {
- service.getTaskComments('999').subscribe(
- (res: Comment[]) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(2);
- expect(res[0].message).toEqual('fake-message-1');
- expect(res[1].message).toEqual('fake-message-2');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTasksComment)
- });
- });
-
- it('should return the tasks checklists ', (done) => {
- service.getTaskChecklist('999').subscribe(
- (res: TaskDetailsModel[]) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(2);
- expect(res[0].name).toEqual('FakeCheckTask1');
- expect(res[0].assignee.email).toEqual('fake-email@dom.com');
- expect(res[0].assignee.firstName).toEqual('firstName');
- expect(res[0].assignee.lastName).toEqual('lastName');
- expect(res[1].name).toEqual('FakeCheckTask2');
- expect(res[1].assignee.email).toEqual('fake-email@dom.com');
- expect(res[1].assignee.firstName).toEqual('firstName');
- expect(res[0].assignee.lastName).toEqual('lastName');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTasksChecklist)
- });
- });
-
- it('should add a task ', (done) => {
- let taskFake = new TaskDetailsModel({
- id: 123,
- parentTaskId: 456,
- name: 'FakeNameTask',
- description: null,
- category: null,
- assignee: fakeUser,
- created: ''
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeFilters)
+ });
});
- service.addTask(taskFake).subscribe(
- (res: TaskDetailsModel) => {
- expect(res).toBeDefined();
- expect(res.id).not.toEqual('');
- expect(res.name).toEqual('FakeNameTask');
- expect(res.created).not.toEqual('');
- done();
- }
- );
+ it('should call the api withthe appId', (done) => {
+ spyOn(service, 'callApiTaskFilters').and.returnValue((fakeAppPromise));
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '777', name: 'FakeNameTask', description: null, category: null,
- assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- })
- });
- });
-
- it('should add a comment task ', (done) => {
- service.addTaskComment('999', 'fake-comment-message').subscribe(
- (res: Comment) => {
- expect(res).toBeDefined();
- expect(res.id).not.toEqual('');
- expect(res.message).toEqual('fake-comment-message');
- expect(res.created).not.toEqual('');
- expect(res.createdBy.email).toEqual('fake-email@dom.com');
- expect(res.createdBy.firstName).toEqual('firstName');
- expect(res.createdBy.lastName).toEqual('lastName');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '111', message: 'fake-comment-message',
- createdBy: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- })
- });
- });
-
- it('should complete the task ', (done) => {
- service.completeTask('999').subscribe(
- (res: any) => {
- expect(res).toBeDefined();
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({})
- });
- });
-
- it('should return the total number of tasks', (done) => {
- service.getTotalTasks(fakeFilter).subscribe(
- res => {
- expect(res).toBeDefined();
- expect(res.size).toEqual(1);
- expect(res.total).toEqual(1);
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTaskList)
- });
- });
-
- it('should return the default filters', (done) => {
- service.createDefaultFilters('1234').subscribe(
- (res: FilterRepresentationModel []) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(4);
- expect(res[0].name).toEqual('Involved Tasks');
- expect(res[1].name).toEqual('My Tasks');
- expect(res[2].name).toEqual('Queued Tasks');
- expect(res[3].name).toEqual('Completed Tasks');
- done();
- }
- );
-
- jasmine.Ajax.requests.at(0).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '111', name: 'Involved Tasks', filter: { assignment: 'fake-involved' }
- })
+ let appId = '1';
+ service.getTaskListFilters(appId).subscribe(
+ (res) => {
+ expect(service.callApiTaskFilters).toHaveBeenCalledWith(appId);
+ done();
+ }
+ );
});
- jasmine.Ajax.requests.at(1).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '222', name: 'My Tasks', filter: { assignment: 'fake-assignee' }
- })
+ it('should return the app filter by id', (done) => {
+ let appId = '1';
+ service.getTaskListFilters(appId).subscribe(
+ (res) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(1);
+ expect(res[0].name).toEqual('FakeInvolvedTasks');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeAppFilter)
+ });
});
- jasmine.Ajax.requests.at(2).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '333', name: 'Queued Tasks', filter: { assignment: 'fake-candidate' }
- })
+ it('should return the task list filtered', (done) => {
+ service.getTasks(fakeFilter).subscribe(
+ res => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(1);
+ expect(res[0].name).toEqual('FakeNameTask');
+ expect(res[0].assignee.email).toEqual('fake-email@dom.com');
+ expect(res[0].assignee.firstName).toEqual('firstName');
+ expect(res[0].assignee.lastName).toEqual('lastName');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskList)
+ });
});
- jasmine.Ajax.requests.at(3).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '444', name: 'Completed Tasks', filter: { assignment: 'fake-involved' }
- })
- });
- });
+ it('should return the task list filtered by processDefinitionKey', (done) => {
+ service.getTasks(fakeFilterWithProcessDefinitionKey).subscribe(
+ res => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(1);
+ expect(res[0].name).toEqual('FakeNameTask');
+ expect(res[0].assignee.email).toEqual('fake-email@dom.com');
+ expect(res[0].assignee.firstName).toEqual('firstName');
+ expect(res[0].assignee.lastName).toEqual('lastName');
+ expect(res[0].processDefinitionKey).toEqual('1');
+ done();
+ }
+ );
- it('should add a filter ', (done) => {
- let filterFake = new FilterRepresentationModel({
- name: 'FakeNameFilter',
- assignment: 'fake-assignement'
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskListDifferentProcessDefinitionKey)
+ });
});
- service.addFilter(filterFake).subscribe(
- (res: FilterRepresentationModel) => {
- expect(res).toBeDefined();
- expect(res.id).not.toEqual('');
- expect(res.name).toEqual('FakeNameFilter');
- expect(res.filter.assignment).toEqual('fake-assignement');
- done();
- }
- );
+ it('should throw an exception when the response is wrong', () => {
+ service.getTasks(fakeFilter).subscribe(
+ (res) => {
+ },
+ (err: any) => {
+ expect(err).toBeDefined();
+ }
+ );
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '2233', name: 'FakeNameFilter', filter: { assignment: 'fake-assignement' }
- })
- });
- });
-
- it('should get the deployed apps ', (done) => {
- service.getDeployedApplications().subscribe(
- (res: any) => {
- expect(res).toBeDefined();
- expect(res.length).toEqual(2);
- expect(res[0].name).toEqual('Sales-Fakes-App');
- expect(res[0].description).toEqual('desc-fake1');
- expect(res[0].deploymentId).toEqual('111');
- expect(res[1].name).toEqual('health-care-Fake');
- expect(res[1].description).toEqual('desc-fake2');
- expect(res[1].deploymentId).toEqual('444');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeApps)
- });
- });
-
- it('should get the filter deployed app ', (done) => {
- let name = 'health-care-Fake';
- service.getDeployedApplications(name).subscribe(
- (res: any) => {
- expect(res).toBeDefined();
- expect(res.name).toEqual('health-care-Fake');
- expect(res.description).toEqual('desc-fake2');
- expect(res.deploymentId).toEqual('444');
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeApps)
- });
- });
-
- it('should create a new standalone task ', (done) => {
- let taskFake = new TaskDetailsModel({
- name: 'FakeNameTask',
- description: 'FakeDescription',
- category: '3'
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 404,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeErrorTaskList)
+ });
});
- service.createNewTask(taskFake).subscribe(
- (res: TaskDetailsModel) => {
- expect(res).toBeDefined();
- expect(res.id).not.toEqual('');
- expect(res.name).toEqual('FakeNameTask');
- expect(res.description).toEqual('FakeDescription');
- expect(res.category).toEqual('3');
- expect(res.created).not.toEqual('');
- done();
- }
- );
+ it('should return the task details ', (done) => {
+ service.getTaskDetails('999').subscribe(
+ (res: TaskDetailsModel) => {
+ expect(res).toBeDefined();
+ expect(res.id).toEqual('999');
+ expect(res.name).toEqual('fake-task-name');
+ expect(res.formKey).toEqual('99');
+ expect(res.assignee).toBeDefined();
+ expect(res.assignee.email).toEqual('fake-email@dom.com');
+ expect(res.assignee.firstName).toEqual('firstName');
+ expect(res.assignee.lastName).toEqual('lastName');
+ done();
+ }
+ );
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({
- id: '777',
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskDetails)
+ });
+ });
+
+ it('should return the tasks comments ', (done) => {
+ service.getTaskComments('999').subscribe(
+ (res: Comment[]) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(2);
+ expect(res[0].message).toEqual('fake-message-1');
+ expect(res[1].message).toEqual('fake-message-2');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTasksComment)
+ });
+ });
+
+ it('should return the tasks checklists ', (done) => {
+ service.getTaskChecklist('999').subscribe(
+ (res: TaskDetailsModel[]) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(2);
+ expect(res[0].name).toEqual('FakeCheckTask1');
+ expect(res[0].assignee.email).toEqual('fake-email@dom.com');
+ expect(res[0].assignee.firstName).toEqual('firstName');
+ expect(res[0].assignee.lastName).toEqual('lastName');
+ expect(res[1].name).toEqual('FakeCheckTask2');
+ expect(res[1].assignee.email).toEqual('fake-email@dom.com');
+ expect(res[1].assignee.firstName).toEqual('firstName');
+ expect(res[0].assignee.lastName).toEqual('lastName');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTasksChecklist)
+ });
+ });
+
+ it('should add a task ', (done) => {
+ let taskFake = new TaskDetailsModel({
+ id: 123,
+ parentTaskId: 456,
name: 'FakeNameTask',
- description: 'FakeDescription',
- category: '3',
+ description: null,
+ category: null,
assignee: fakeUser,
- created: '2016-07-15T11:19:17.440+0000'
- })
- });
- });
-
- it('should claim a task', (done) => {
- let taskId = '111';
-
- service.claimTask(taskId).subscribe(
- (res: any) => {
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify({})
- });
- });
-
- it('should return the filter if it contains task id', (done) => {
- let taskId = '1';
- let filterFake = new FilterRepresentationModel({
- name: 'FakeNameFilter',
- assignment: 'fake-assignement',
- filter: {
- processDefinitionKey: '1',
- assignment: 'fake',
- state: 'none',
- sort: 'asc'
- }
- });
-
- service.isTaskRelatedToFilter(taskId, filterFake).subscribe(
- (res: any) => {
- expect(res).toBeDefined();
- expect(res).not.toBeNull();
- done();
- }
- );
-
- jasmine.Ajax.requests.mostRecent().respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTaskList)
- });
- });
-
- it('should return the filters if it contains task id', async(() => {
- let taskId = '1';
-
- let fakeFilterList: FilterRepresentationModel[] = [];
- fakeFilterList.push(fakeRepresentationFilter1, fakeRepresentationFilter2);
- let resultFilter = null;
- service.getFilterForTaskById(taskId, fakeFilterList).subscribe(
- (res: FilterRepresentationModel) => {
- resultFilter = res;
- },
- () => {
- },
- () => {
- expect(resultFilter).toBeDefined();
- expect(resultFilter).not.toBeNull();
- expect(resultFilter.name).toBe('CONTAIN FILTER');
+ created: ''
});
- jasmine.Ajax.requests.at(0).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(fakeTaskList)
+ service.addTask(taskFake).subscribe(
+ (res: TaskDetailsModel) => {
+ expect(res).toBeDefined();
+ expect(res.id).not.toEqual('');
+ expect(res.name).toEqual('FakeNameTask');
+ expect(res.created).not.toEqual('');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '777', name: 'FakeNameTask', description: null, category: null,
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ })
+ });
});
- jasmine.Ajax.requests.at(1).respondWith({
- 'status': 200,
- contentType: 'application/json',
- responseText: JSON.stringify(secondFakeTaskList)
+ it('should remove a checklist task ', (done) => {
+ service.deleteTask('999').subscribe(
+ () => {
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json'
+ });
});
- }));
+
+ it('should add a comment task ', (done) => {
+ service.addTaskComment('999', 'fake-comment-message').subscribe(
+ (res: Comment) => {
+ expect(res).toBeDefined();
+ expect(res.id).not.toEqual('');
+ expect(res.message).toEqual('fake-comment-message');
+ expect(res.created).not.toEqual('');
+ expect(res.createdBy.email).toEqual('fake-email@dom.com');
+ expect(res.createdBy.firstName).toEqual('firstName');
+ expect(res.createdBy.lastName).toEqual('lastName');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '111', message: 'fake-comment-message',
+ createdBy: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ })
+ });
+ });
+
+ it('should complete the task ', (done) => {
+ service.completeTask('999').subscribe(
+ (res: any) => {
+ expect(res).toBeDefined();
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({})
+ });
+ });
+
+ it('should return the total number of tasks', (done) => {
+ service.getTotalTasks(fakeFilter).subscribe(
+ res => {
+ expect(res).toBeDefined();
+ expect(res.size).toEqual(1);
+ expect(res.total).toEqual(1);
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskList)
+ });
+ });
+
+ it('should return the default filters', (done) => {
+ service.createDefaultFilters('1234').subscribe(
+ (res: FilterRepresentationModel []) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(4);
+ expect(res[0].name).toEqual('Involved Tasks');
+ expect(res[1].name).toEqual('My Tasks');
+ expect(res[2].name).toEqual('Queued Tasks');
+ expect(res[3].name).toEqual('Completed Tasks');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.at(0).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '111', name: 'Involved Tasks', filter: { assignment: 'fake-involved' }
+ })
+ });
+
+ jasmine.Ajax.requests.at(1).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '222', name: 'My Tasks', filter: { assignment: 'fake-assignee' }
+ })
+ });
+
+ jasmine.Ajax.requests.at(2).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '333', name: 'Queued Tasks', filter: { assignment: 'fake-candidate' }
+ })
+ });
+
+ jasmine.Ajax.requests.at(3).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '444', name: 'Completed Tasks', filter: { assignment: 'fake-involved' }
+ })
+ });
+ });
+
+ it('should add a filter ', (done) => {
+ let filterFake = new FilterRepresentationModel({
+ name: 'FakeNameFilter',
+ assignment: 'fake-assignement'
+ });
+
+ service.addFilter(filterFake).subscribe(
+ (res: FilterRepresentationModel) => {
+ expect(res).toBeDefined();
+ expect(res.id).not.toEqual('');
+ expect(res.name).toEqual('FakeNameFilter');
+ expect(res.filter.assignment).toEqual('fake-assignement');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '2233', name: 'FakeNameFilter', filter: { assignment: 'fake-assignement' }
+ })
+ });
+ });
+
+ it('should get the deployed apps ', (done) => {
+ service.getDeployedApplications().subscribe(
+ (res: any) => {
+ expect(res).toBeDefined();
+ expect(res.length).toEqual(2);
+ expect(res[0].name).toEqual('Sales-Fakes-App');
+ expect(res[0].description).toEqual('desc-fake1');
+ expect(res[0].deploymentId).toEqual('111');
+ expect(res[1].name).toEqual('health-care-Fake');
+ expect(res[1].description).toEqual('desc-fake2');
+ expect(res[1].deploymentId).toEqual('444');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeApps)
+ });
+ });
+
+ it('should get the filter deployed app ', (done) => {
+ let name = 'health-care-Fake';
+ service.getDeployedApplications(name).subscribe(
+ (res: any) => {
+ expect(res).toBeDefined();
+ expect(res.name).toEqual('health-care-Fake');
+ expect(res.description).toEqual('desc-fake2');
+ expect(res.deploymentId).toEqual('444');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeApps)
+ });
+ });
+
+ it('should create a new standalone task ', (done) => {
+ let taskFake = new TaskDetailsModel({
+ name: 'FakeNameTask',
+ description: 'FakeDescription',
+ category: '3'
+ });
+
+ service.createNewTask(taskFake).subscribe(
+ (res: TaskDetailsModel) => {
+ expect(res).toBeDefined();
+ expect(res.id).not.toEqual('');
+ expect(res.name).toEqual('FakeNameTask');
+ expect(res.description).toEqual('FakeDescription');
+ expect(res.category).toEqual('3');
+ expect(res.created).not.toEqual('');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({
+ id: '777',
+ name: 'FakeNameTask',
+ description: 'FakeDescription',
+ category: '3',
+ assignee: fakeUser,
+ created: '2016-07-15T11:19:17.440+0000'
+ })
+ });
+ });
+
+ it('should claim a task', (done) => {
+ let taskId = '111';
+
+ service.claimTask(taskId).subscribe(
+ (res: any) => {
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify({})
+ });
+ });
+
+ it('should return the filter if it contains task id', (done) => {
+ let taskId = '1';
+ let filterFake = new FilterRepresentationModel({
+ name: 'FakeNameFilter',
+ assignment: 'fake-assignement',
+ filter: {
+ processDefinitionKey: '1',
+ assignment: 'fake',
+ state: 'none',
+ sort: 'asc'
+ }
+ });
+
+ service.isTaskRelatedToFilter(taskId, filterFake).subscribe(
+ (res: any) => {
+ expect(res).toBeDefined();
+ expect(res).not.toBeNull();
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskList)
+ });
+ });
+
+ it('should return the filters if it contains task id', async(() => {
+ let taskId = '1';
+
+ let fakeFilterList: FilterRepresentationModel[] = [];
+ fakeFilterList.push(fakeRepresentationFilter1, fakeRepresentationFilter2);
+ let resultFilter = null;
+ service.getFilterForTaskById(taskId, fakeFilterList).subscribe(
+ (res: FilterRepresentationModel) => {
+ resultFilter = res;
+ },
+ () => {
+ },
+ () => {
+ expect(resultFilter).toBeDefined();
+ expect(resultFilter).not.toBeNull();
+ expect(resultFilter.name).toBe('CONTAIN FILTER');
+ });
+
+ jasmine.Ajax.requests.at(0).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeTaskList)
+ });
+
+ jasmine.Ajax.requests.at(1).respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(secondFakeTaskList)
+ });
+ }));
+
+ it('should get possibile form list', (done) => {
+ service.getFormList().subscribe(
+ (res: any) => {
+ expect(res).toBeDefined();
+ expect(res.length).toBe(2);
+ expect(res[0].id).toBe(1);
+ expect(res[0].name).toBe('form with all widgets');
+ expect(res[1].id).toBe(2);
+ expect(res[1].name).toBe('uppy');
+ done();
+ }
+ );
+
+ jasmine.Ajax.requests.mostRecent().respondWith({
+ 'status': 200,
+ contentType: 'application/json',
+ responseText: JSON.stringify(fakeFormList)
+ });
+ });
+ });
});
diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
index d2ea8f94c2..82ea6fe045 100644
--- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts
@@ -256,6 +256,15 @@ export class ActivitiTaskListService {
}).catch(err => this.handleError(err));
}
+ /**
+ * Delete a task
+ * @param taskId - string
+ */
+ deleteTask(taskId: string): Observable {
+ return Observable.fromPromise(this.callApiDeleteTask(taskId))
+ .catch(err => this.handleError(err));
+ }
+
/**
* Add a filter
* @param filter - FilterRepresentationModel
@@ -357,6 +366,10 @@ export class ActivitiTaskListService {
return this.apiService.getInstance().activiti.taskApi.addSubtask(task.parentTaskId, task);
}
+ private callApiDeleteTask(taskId: string) {
+ return this.apiService.getInstance().activiti.taskApi.deleteTask(taskId);
+ }
+
private callApiAddFilter(filter: FilterRepresentationModel) {
return this.apiService.getInstance().activiti.userFiltersApi.createUserTaskFilter(filter);
}