[ACA-3229] - fixed error on start process cloud when all the value a… (#5660)

* [ACA-3229] - fixed error on start process cloud when all the value are selected by default

* Update start-process-cloud.component.ts

Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
This commit is contained in:
Vito 2020-04-30 22:55:24 +01:00 committed by GitHub
parent 1b530e3236
commit 1430314815
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 8 deletions

View File

@ -33,6 +33,7 @@ import { fakeProcessDefinitions, fakeStartForm, fakeStartFormNotValid,
fakeProcessInstance, fakeNoNameProcessDefinitions, fakeProcessInstance, fakeNoNameProcessDefinitions,
fakeSingleProcessDefinition, fakeCreatedProcessInstance } from '../mock/start-process.component.mock'; fakeSingleProcessDefinition, fakeCreatedProcessInstance } from '../mock/start-process.component.mock';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ProcessPayloadCloud } from '../models/process-payload-cloud.model';
describe('StartProcessCloudComponent', () => { describe('StartProcessCloudComponent', () => {
@ -99,6 +100,7 @@ describe('StartProcessCloudComponent', () => {
component = fixture.componentInstance; component = fixture.componentInstance;
getDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue(of(fakeProcessDefinitions)); getDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue(of(fakeProcessDefinitions));
spyOn(processService, 'updateProcess').and.returnValue(of());
startProcessSpy = spyOn(processService, 'startCreatedProcess').and.returnValue(of(fakeProcessInstance)); startProcessSpy = spyOn(processService, 'startCreatedProcess').and.returnValue(of(fakeProcessInstance));
createProcessSpy = spyOn(processService, 'createProcess').and.returnValue(of(fakeCreatedProcessInstance)); createProcessSpy = spyOn(processService, 'createProcess').and.returnValue(of(fakeCreatedProcessInstance));
}); });
@ -128,7 +130,8 @@ describe('StartProcessCloudComponent', () => {
const startBtn = fixture.nativeElement.querySelector('#button-start'); const startBtn = fixture.nativeElement.querySelector('#button-start');
expect(startBtn.disabled).toBe(false); expect(startBtn.disabled).toBe(false);
expect(component.isProcessFormValid()).toBe(true); expect(component.isProcessFormValid()).toBe(true);
expect(createProcessSpy).toHaveBeenCalledWith('MyApp', component.processPayloadCloud); expect(createProcessSpy).toHaveBeenCalledWith('MyApp', new ProcessPayloadCloud({name: 'OLE',
processDefinitionKey: fakeProcessDefinitions[1].key}));
expect(component.currentCreatedProcess.status).toBe('CREATED'); expect(component.currentCreatedProcess.status).toBe('CREATED');
expect(component.currentCreatedProcess.startDate).toBeNull(); expect(component.currentCreatedProcess.startDate).toBeNull();
})); }));
@ -297,7 +300,8 @@ describe('StartProcessCloudComponent', () => {
expect(startBtn.disabled).toBe(false); expect(startBtn.disabled).toBe(false);
expect(component.formCloud.isValid).toBe(true); expect(component.formCloud.isValid).toBe(true);
expect(component.isProcessFormValid()).toBe(true); expect(component.isProcessFormValid()).toBe(true);
expect(createProcessSpy).toHaveBeenCalledWith('MyApp', component.processPayloadCloud); expect(createProcessSpy).toHaveBeenCalledWith('MyApp', new ProcessPayloadCloud({name: 'testFormWithProcess',
processDefinitionKey: fakeProcessDefinitions[1].key}));
expect(component.currentCreatedProcess.status).toBe('CREATED'); expect(component.currentCreatedProcess.status).toBe('CREATED');
expect(component.currentCreatedProcess.startDate).toBeNull(); expect(component.currentCreatedProcess.startDate).toBeNull();
})); }));

View File

@ -28,7 +28,7 @@ import { MatAutocompleteTrigger } from '@angular/material';
import { ProcessPayloadCloud } from '../models/process-payload-cloud.model'; import { ProcessPayloadCloud } from '../models/process-payload-cloud.model';
import { debounceTime, takeUntil, switchMap, filter, distinctUntilChanged } from 'rxjs/operators'; import { debounceTime, takeUntil, switchMap, filter, distinctUntilChanged } from 'rxjs/operators';
import { ProcessDefinitionCloud } from '../models/process-definition-cloud.model'; import { ProcessDefinitionCloud } from '../models/process-definition-cloud.model';
import { Subject, Observable } from 'rxjs'; import { Subject, Observable, concat } from 'rxjs';
import { TaskVariableCloud } from '../../../form/models/task-variable-cloud.model'; import { TaskVariableCloud } from '../../../form/models/task-variable-cloud.model';
@Component({ @Component({
@ -167,8 +167,11 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy
} }
private generateProcessInstance(): Observable <ProcessInstanceCloud> { private generateProcessInstance(): Observable <ProcessInstanceCloud> {
this.buildProcessCloudPayload(); const createPayload: ProcessPayloadCloud = new ProcessPayloadCloud({
return this.startProcessCloudService.createProcess(this.appName, this.processPayloadCloud); name: this.processInstanceName.value,
processDefinitionKey: this.processPayloadCloud.processDefinitionKey
});
return this.startProcessCloudService.createProcess(this.appName, createPayload);
} }
private selectProcessDefinitionByProcesDefinitionName(processDefinitionName: string): void { private selectProcessDefinitionByProcesDefinitionName(processDefinitionName: string): void {
@ -271,10 +274,11 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy
startProcess() { startProcess() {
this.isLoading = true; this.isLoading = true;
this.buildProcessCloudPayload(); this.buildProcessCloudPayload();
concat(
this.startProcessCloudService.startCreatedProcess(this.appName, this.currentCreatedProcess.id).subscribe( this.startProcessCloudService.updateProcess(this.appName, this.currentCreatedProcess.id, this.processPayloadCloud),
this.startProcessCloudService.startCreatedProcess(this.appName, this.currentCreatedProcess.id)
).subscribe(
(res) => { (res) => {
this.success.emit(res); this.success.emit(res);
this.isLoading = false; this.isLoading = false;

View File

@ -63,6 +63,7 @@ export class StartProcessCloudService extends BaseCloudService {
*/ */
createProcess(appName: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> { createProcess(appName: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> {
const url = `${this.getBasePath(appName)}/rb/v1/process-instances/create`; const url = `${this.getBasePath(appName)}/rb/v1/process-instances/create`;
payload.payloadType = 'StartProcessPayload';
return this.post(url, payload).pipe( return this.post(url, payload).pipe(
map((result: any) => result.entry), map((result: any) => result.entry),
@ -92,9 +93,26 @@ export class StartProcessCloudService extends BaseCloudService {
*/ */
startProcess(appName: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> { startProcess(appName: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> {
const url = `${this.getBasePath(appName)}/rb/v1/process-instances`; const url = `${this.getBasePath(appName)}/rb/v1/process-instances`;
payload.payloadType = 'StartProcessPayload';
return this.post(url, payload).pipe( return this.post(url, payload).pipe(
map(processInstance => new ProcessInstanceCloud(processInstance)) map(processInstance => new ProcessInstanceCloud(processInstance))
); );
} }
/**
* Update an existing process instance
* @param appName name of the Application
* @param processInstanceId process instance to update
* @param payload Details of the process (definition key, name, variables, etc)
* @returns Details of the process instance just started
*/
updateProcess(appName: string, processInstanceId: string, payload: ProcessPayloadCloud): Observable<ProcessInstanceCloud> {
const url = `${this.getBasePath(appName)}/rb/v1/process-instances/${processInstanceId}`;
payload.payloadType = 'UpdateProcessPayload';
return this.put(url, payload).pipe(
map(processInstance => new ProcessInstanceCloud(processInstance))
);
}
} }