mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
* fix upload for process attachment list export ActivitiContentService ProcessService.createOrUpdateProcessInstanceVariables has incorrect method signature * fix signature methods * fix test parameters
538 lines
20 KiB
TypeScript
538 lines
20 KiB
TypeScript
/*!
|
|
* @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 { TestBed } from '@angular/core/testing';
|
|
import { async } from '@angular/core/testing';
|
|
import { AlfrescoApi } from 'alfresco-js-api';
|
|
import { AlfrescoApiService } from '@alfresco/adf-core';
|
|
import { exampleProcess, fakeProcessInstances } from '../../mock';
|
|
import { mockError, fakeProcessDef, fakeTasksList } from '../../mock';
|
|
import { ProcessFilterParamRepresentationModel } from '../models/filter-process.model';
|
|
import { ProcessInstanceVariable } from '../models/process-instance-variable.model';
|
|
import { ProcessService } from './process.service';
|
|
|
|
declare let moment: any;
|
|
|
|
describe('ProcessService', () => {
|
|
|
|
let service: ProcessService;
|
|
let apiService: AlfrescoApiService;
|
|
let alfrescoApi: AlfrescoApi;
|
|
|
|
beforeEach(() => {
|
|
TestBed.configureTestingModule({
|
|
providers: [
|
|
ProcessService
|
|
]
|
|
});
|
|
service = TestBed.get(ProcessService);
|
|
apiService = TestBed.get(AlfrescoApiService);
|
|
alfrescoApi = apiService.getInstance();
|
|
});
|
|
|
|
describe('process instances', () => {
|
|
|
|
let getProcessInstances: jasmine.Spy;
|
|
|
|
let filter: ProcessFilterParamRepresentationModel = new ProcessFilterParamRepresentationModel({
|
|
processDefinitionId: '1',
|
|
appDefinitionId: '1',
|
|
page: 1,
|
|
sort: 'created-asc',
|
|
state: 'completed'
|
|
});
|
|
|
|
beforeEach(() => {
|
|
getProcessInstances = spyOn(alfrescoApi.activiti.processApi, 'getProcessInstances')
|
|
.and
|
|
.returnValue(Promise.resolve({ data: [ exampleProcess ] }));
|
|
});
|
|
|
|
it('should return the correct number of instances', async(() => {
|
|
service.getProcessInstances(filter).subscribe((instances) => {
|
|
expect(instances.length).toBe(1);
|
|
});
|
|
}));
|
|
|
|
it('should return the correct instance data', async(() => {
|
|
service.getProcessInstances(filter).subscribe((instances) => {
|
|
let instance = instances[0];
|
|
expect(instance.id).toBe(exampleProcess.id);
|
|
expect(instance.name).toBe(exampleProcess.name);
|
|
expect(instance.started).toBe(exampleProcess.started);
|
|
});
|
|
}));
|
|
|
|
it('should filter by processDefinitionKey', async(() => {
|
|
getProcessInstances = getProcessInstances.and.returnValue(Promise.resolve(fakeProcessInstances));
|
|
|
|
service.getProcessInstances(filter, 'fakeProcessDefinitionKey1').subscribe((instances) => {
|
|
expect(instances.length).toBe(1);
|
|
let instance = instances[0];
|
|
expect(instance.id).toBe('340124');
|
|
expect(instance.name).toBe('James Franklin EMEA Onboarding');
|
|
expect(instance.started).toEqual(new Date('2017-10-09T12:19:44.560+0000'));
|
|
});
|
|
}));
|
|
|
|
it('should call service to fetch process instances', () => {
|
|
service.getProcessInstances(filter);
|
|
expect(getProcessInstances).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should call service with supplied parameters', () => {
|
|
service.getProcessInstances(filter);
|
|
expect(getProcessInstances).toHaveBeenCalledWith(filter);
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
getProcessInstances = getProcessInstances.and.returnValue(Promise.reject(mockError));
|
|
service.getProcessInstances(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
getProcessInstances = getProcessInstances.and.returnValue(Promise.reject(null));
|
|
service.getProcessInstances(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('process instance', () => {
|
|
|
|
const processId = 'test';
|
|
let getProcessInstance: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
getProcessInstance = spyOn(alfrescoApi.activiti.processApi, 'getProcessInstance')
|
|
.and
|
|
.returnValue(Promise.resolve(exampleProcess));
|
|
});
|
|
|
|
it('should return the correct instance data', async(() => {
|
|
service.getProcess(processId).subscribe((instance) => {
|
|
expect(instance.id).toBe(exampleProcess.id);
|
|
expect(instance.name).toBe(exampleProcess.name);
|
|
expect(instance.started).toBe(exampleProcess.started);
|
|
});
|
|
}));
|
|
|
|
it('should call service to fetch process instances', () => {
|
|
service.getProcess(processId);
|
|
expect(getProcessInstance).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should call service with supplied process ID', () => {
|
|
service.getProcess(processId);
|
|
expect(getProcessInstance).toHaveBeenCalledWith(processId);
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
getProcessInstance = getProcessInstance.and.returnValue(Promise.reject(mockError));
|
|
service.getProcess(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
getProcessInstance = getProcessInstance.and.returnValue(Promise.reject(null));
|
|
service.getProcess(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('start process instance', () => {
|
|
|
|
const processDefId = '1234', processName = 'My process instance';
|
|
let startNewProcessInstance: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
startNewProcessInstance = spyOn(alfrescoApi.activiti.processApi, 'startNewProcessInstance')
|
|
.and
|
|
.returnValue(Promise.resolve(exampleProcess));
|
|
});
|
|
|
|
it('should call the API to create the process instance', () => {
|
|
service.startProcess(processDefId, processName);
|
|
expect(startNewProcessInstance).toHaveBeenCalledWith({
|
|
name: processName,
|
|
processDefinitionId: processDefId
|
|
});
|
|
});
|
|
|
|
it('should call the API to create the process instance with form parameters', () => {
|
|
let formParams = {
|
|
type: 'ford',
|
|
color: 'red'
|
|
};
|
|
service.startProcess(processDefId, processName, null, formParams);
|
|
expect(startNewProcessInstance).toHaveBeenCalledWith({
|
|
name: processName,
|
|
processDefinitionId: processDefId,
|
|
values: formParams
|
|
});
|
|
});
|
|
|
|
it('should return the created process instance', async(() => {
|
|
service.startProcess(processDefId, processName).subscribe((createdProcess) => {
|
|
expect(createdProcess.id).toBe(exampleProcess.id);
|
|
expect(createdProcess.name).toBe(exampleProcess.name);
|
|
expect(createdProcess.started).toBe(exampleProcess.started);
|
|
expect(createdProcess.startedBy.id).toBe(exampleProcess.startedBy.id);
|
|
});
|
|
}));
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
startNewProcessInstance = startNewProcessInstance.and.returnValue(Promise.reject(mockError));
|
|
|
|
service.startProcess(processDefId, processName).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
startNewProcessInstance = startNewProcessInstance.and.returnValue(Promise.reject(null));
|
|
service.startProcess(processDefId, processName).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('cancel process instance', () => {
|
|
|
|
const processInstanceId = '1234';
|
|
let deleteProcessInstance: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
deleteProcessInstance = spyOn(alfrescoApi.activiti.processApi, 'deleteProcessInstance')
|
|
.and
|
|
.returnValue(Promise.resolve());
|
|
});
|
|
|
|
it('should call service to delete process instances', () => {
|
|
service.cancelProcess(processInstanceId);
|
|
expect(deleteProcessInstance).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should call service with supplied process ID', () => {
|
|
service.cancelProcess(processInstanceId);
|
|
expect(deleteProcessInstance).toHaveBeenCalledWith(processInstanceId);
|
|
});
|
|
|
|
it('should run the success callback', (done) => {
|
|
service.cancelProcess(processInstanceId).subscribe(() => {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
deleteProcessInstance = deleteProcessInstance.and.returnValue(Promise.reject(mockError));
|
|
service.cancelProcess(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
deleteProcessInstance = deleteProcessInstance.and.returnValue(Promise.reject(null));
|
|
service.cancelProcess(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('process definitions', () => {
|
|
|
|
let getProcessDefinitions: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
getProcessDefinitions = spyOn(alfrescoApi.activiti.processApi, 'getProcessDefinitions')
|
|
.and
|
|
.returnValue(Promise.resolve({ data: [ fakeProcessDef, fakeProcessDef ] }));
|
|
});
|
|
|
|
it('should return the correct number of process defs', async(() => {
|
|
service.getProcessDefinitions().subscribe((defs) => {
|
|
expect(defs.length).toBe(2);
|
|
});
|
|
}));
|
|
|
|
it('should return the correct process def data', async(() => {
|
|
service.getProcessDefinitions().subscribe((defs) => {
|
|
expect(defs[0].id).toBe(fakeProcessDef.id);
|
|
expect(defs[0].key).toBe(fakeProcessDef.key);
|
|
expect(defs[0].name).toBe(fakeProcessDef.name);
|
|
});
|
|
}));
|
|
|
|
it('should call API with correct parameters when no appId provided', () => {
|
|
service.getProcessDefinitions();
|
|
expect(getProcessDefinitions).toHaveBeenCalledWith({
|
|
latest: true
|
|
});
|
|
});
|
|
|
|
it('should call API with correct parameters when appId provided', () => {
|
|
const appId = 1;
|
|
service.getProcessDefinitions(appId);
|
|
expect(getProcessDefinitions).toHaveBeenCalledWith({
|
|
latest: true,
|
|
appDefinitionId: appId
|
|
});
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
getProcessDefinitions = getProcessDefinitions.and.returnValue(Promise.reject(mockError));
|
|
service.getProcessDefinitions().subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
getProcessDefinitions = getProcessDefinitions.and.returnValue(Promise.reject(null));
|
|
service.getProcessDefinitions().subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('process instance tasks', () => {
|
|
|
|
const processId = '1001';
|
|
let listTasks: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
listTasks = spyOn(alfrescoApi.activiti.taskApi, 'listTasks')
|
|
.and
|
|
.returnValue(Promise.resolve(fakeTasksList));
|
|
});
|
|
|
|
it('should return the correct number of tasks', async(() => {
|
|
service.getProcessTasks(processId).subscribe((tasks) => {
|
|
expect(tasks.length).toBe(2);
|
|
});
|
|
}));
|
|
|
|
it('should return the correct task data', async(() => {
|
|
let fakeTasks = fakeTasksList.data;
|
|
service.getProcessTasks(processId).subscribe((tasks) => {
|
|
let task = tasks[0];
|
|
expect(task.id).toBe(fakeTasks[0].id);
|
|
expect(task.name).toBe(fakeTasks[0].name);
|
|
expect(task.created).toEqual(moment(new Date('2016-11-10T00:00:00+00:00'), 'YYYY-MM-DD').format());
|
|
});
|
|
}));
|
|
|
|
it('should call service to fetch process instance tasks', () => {
|
|
service.getProcessTasks(processId);
|
|
expect(listTasks).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should call service with processInstanceId parameter', () => {
|
|
service.getProcessTasks(processId);
|
|
expect(listTasks).toHaveBeenCalledWith({
|
|
processInstanceId: processId
|
|
});
|
|
});
|
|
|
|
it('should call service with processInstanceId and state parameters', () => {
|
|
service.getProcessTasks(processId, 'completed');
|
|
expect(listTasks).toHaveBeenCalledWith({
|
|
processInstanceId: processId,
|
|
state: 'completed'
|
|
});
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
listTasks = listTasks.and.returnValue(Promise.reject(mockError));
|
|
service.getProcessTasks(processId).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
listTasks = listTasks.and.returnValue(Promise.reject(null));
|
|
service.getProcessTasks(processId).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('process variables', () => {
|
|
|
|
let getVariablesSpy: jasmine.Spy;
|
|
let createOrUpdateProcessInstanceVariablesSpy: jasmine.Spy;
|
|
let deleteProcessInstanceVariableSpy: jasmine.Spy;
|
|
|
|
beforeEach(() => {
|
|
getVariablesSpy = spyOn(alfrescoApi.activiti.processInstanceVariablesApi, 'getProcessInstanceVariables').and.returnValue(Promise.resolve([{
|
|
name: 'var1',
|
|
value: 'Test1'
|
|
}, {
|
|
name: 'var3',
|
|
value: 'Test3'
|
|
}]));
|
|
|
|
createOrUpdateProcessInstanceVariablesSpy = spyOn(alfrescoApi.activiti.processInstanceVariablesApi,
|
|
'createOrUpdateProcessInstanceVariables').and.returnValue(Promise.resolve({}));
|
|
|
|
deleteProcessInstanceVariableSpy = spyOn(alfrescoApi.activiti.processInstanceVariablesApi,
|
|
'deleteProcessInstanceVariable').and.returnValue(Promise.resolve());
|
|
});
|
|
|
|
describe('get variables', () => {
|
|
|
|
it('should call service to fetch variables', () => {
|
|
service.getProcessInstanceVariables(null);
|
|
expect(getVariablesSpy).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
getVariablesSpy = getVariablesSpy.and.returnValue(Promise.reject(mockError));
|
|
service.getProcessInstanceVariables(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
getVariablesSpy = getVariablesSpy.and.returnValue(Promise.reject(null));
|
|
service.getProcessInstanceVariables(null).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('create or update variables', () => {
|
|
|
|
let updatedVariables = [new ProcessInstanceVariable({
|
|
name: 'var1',
|
|
value: 'Test1'
|
|
}), new ProcessInstanceVariable({
|
|
name: 'var3',
|
|
value: 'Test3'
|
|
})];
|
|
|
|
it('should call service to create or update variables', () => {
|
|
service.createOrUpdateProcessInstanceVariables('123', updatedVariables);
|
|
expect(createOrUpdateProcessInstanceVariablesSpy).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
createOrUpdateProcessInstanceVariablesSpy = createOrUpdateProcessInstanceVariablesSpy.and.returnValue(Promise.reject(mockError));
|
|
service.createOrUpdateProcessInstanceVariables('123', updatedVariables).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
createOrUpdateProcessInstanceVariablesSpy = createOrUpdateProcessInstanceVariablesSpy.and.returnValue(Promise.reject(null));
|
|
service.createOrUpdateProcessInstanceVariables('123', updatedVariables).subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
describe('delete variables', () => {
|
|
|
|
it('should call service to delete variables', () => {
|
|
service.deleteProcessInstanceVariable('123', 'myVar');
|
|
expect(deleteProcessInstanceVariableSpy).toHaveBeenCalled();
|
|
});
|
|
|
|
it('should pass on any error that is returned by the API', async(() => {
|
|
deleteProcessInstanceVariableSpy = deleteProcessInstanceVariableSpy.and.returnValue(Promise.reject(mockError));
|
|
service.deleteProcessInstanceVariable('123', 'myVar').subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe(mockError);
|
|
}
|
|
);
|
|
}));
|
|
|
|
it('should return a default error if no data is returned by the API', async(() => {
|
|
deleteProcessInstanceVariableSpy = deleteProcessInstanceVariableSpy.and.returnValue(Promise.reject(null));
|
|
service.deleteProcessInstanceVariable('123', 'myVar').subscribe(
|
|
() => {},
|
|
(res) => {
|
|
expect(res).toBe('Server error');
|
|
}
|
|
);
|
|
}));
|
|
|
|
});
|
|
|
|
});
|
|
});
|