diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html
index f10c975307..3169f55f6f 100755
--- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html
+++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.html
@@ -32,7 +32,7 @@
[matAutocomplete]="auto"
id="processDefinitionName">
-
+
{{ getProcessDefinitionValue(processDef) }}
diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts
index 0bc538b3e7..7d00baa807 100755
--- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts
+++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.spec.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import { SimpleChange } from '@angular/core';
+import { SimpleChange, DebugElement } from '@angular/core';
import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
import { setupTestBed } from '@alfresco/adf-core';
import { of, throwError } from 'rxjs';
@@ -27,6 +27,7 @@ import { ProcessServiceCloudTestingModule } from '../../../testing/process-servi
import { ProcessCloudModule } from '../../process-cloud.module';
import { fakeProcessDefinitions, fakeStartForm, fakeStartFormNotValid,
fakeProcessInstance, fakeProcessPayload, fakeNoNameProcessDefinitions } from '../mock/start-process.component.mock';
+import { By } from '@angular/platform-browser';
describe('StartProcessCloudComponent', () => {
@@ -37,6 +38,19 @@ describe('StartProcessCloudComponent', () => {
let getDefinitionsSpy: jasmine.Spy;
let startProcessSpy: jasmine.Spy;
+ const selectOptionByName = (name: string) => {
+
+ const selectElement = fixture.nativeElement.querySelector('button#adf-select-process-dropdown');
+ selectElement.click();
+ fixture.detectChanges();
+ const options: any = fixture.debugElement.queryAll(By.css('.mat-option-text'));
+ const currentOption = options.find( (option: DebugElement) => option.nativeElement.innerHTML.trim() === name );
+
+ if (currentOption) {
+ currentOption.nativeElement.click();
+ }
+ };
+
setupTestBed({
imports: [
ProcessServiceCloudTestingModule,
@@ -315,6 +329,18 @@ describe('StartProcessCloudComponent', () => {
});
}));
+ it('should select the right process when the processKey begins with the name', async(() => {
+ getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of(fakeProcessDefinitions));
+ component.name = 'My new process';
+ component.processDefinitionName = 'process';
+ selectOptionByName('process');
+
+ fixture.whenStable().then(() => {
+ expect(component.processDefinitionCurrent.name).toBe(JSON.parse(JSON.stringify(fakeProcessDefinitions[3])).name);
+ expect(component.processDefinitionCurrent.key).toBe(JSON.parse(JSON.stringify(fakeProcessDefinitions[3])).key);
+ });
+ }));
+
describe('dropdown', () => {
it('should hide the process dropdown button if showSelectProcessDropdown is false', async(() => {
@@ -396,7 +422,7 @@ describe('StartProcessCloudComponent', () => {
component.processForm.controls['processDefinition'].setValue('process');
fixture.detectChanges();
tick(3000);
- expect(component.filteredProcesses.length).toEqual(3);
+ expect(component.filteredProcesses.length).toEqual(4);
component.processForm.controls['processDefinition'].setValue('processwithfo');
fixture.detectChanges();
diff --git a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts
index 2f8c43e901..2fadbbb2de 100755
--- a/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts
@@ -109,12 +109,7 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy
.pipe(debounceTime(300))
.pipe(takeUntil(this.onDestroy$))
.subscribe((processDefinitionName) => {
- this.processPayloadCloud.processDefinitionKey = null;
- if (this.processDefinition.valid) {
- this.setProcessDefinitionOnForm(processDefinitionName);
- } else {
- this.filteredProcesses = this.getProcessDefinitionList(processDefinitionName);
- }
+ this.filteredProcesses = this.getProcessDefinitionList(processDefinitionName);
});
}
@@ -139,12 +134,12 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy
StartProcessCloudComponent.MAX_NAME_LENGTH : this.maxNameLength;
}
- setProcessDefinitionOnForm(processDefinition: string) {
- this.filteredProcesses = this.getProcessDefinitionList(processDefinition);
- const selectedProcess = this.getProcessIfExists(processDefinition);
- this.processDefinitionCurrent = selectedProcess;
+ setProcessDefinitionOnForm(selectedProcessDefinitionName: string) {
+ this.processDefinitionCurrent = this.filteredProcesses.find( (process: ProcessDefinitionCloud) =>
+ process.name === selectedProcessDefinitionName || process.key === selectedProcessDefinitionName );
+
this.isFormCloudLoaded = false;
- this.processPayloadCloud.processDefinitionKey = selectedProcess.key;
+ this.processPayloadCloud.processDefinitionKey = this.processDefinitionCurrent.key;
}
private getProcessDefinitionList(processDefinition: string): ProcessDefinitionCloud[] {
diff --git a/lib/process-services-cloud/src/lib/process/start-process/mock/start-process.component.mock.ts b/lib/process-services-cloud/src/lib/process/start-process/mock/start-process.component.mock.ts
index 97cd674705..1ebaba9849 100755
--- a/lib/process-services-cloud/src/lib/process/start-process/mock/start-process.component.mock.ts
+++ b/lib/process-services-cloud/src/lib/process/start-process/mock/start-process.component.mock.ts
@@ -54,6 +54,13 @@ export let fakeProcessDefinitions: ProcessDefinitionCloud[] = [
id: 'd00c0237-8772-11e9-859a-428f83d5904f',
key: 'process-5151ad1d-f992-4ee6-9742-3a04617469fe',
name: 'processwithform'
+ }),
+ new ProcessDefinitionCloud({
+ appName: 'startformwithoutupload',
+ formKey: 'form-a5d50817-5183-4850-802d-17af54b2632f',
+ id: 'd00c0237-8772-11e9-859a-428f83d5904f',
+ key: 'process-51251ad1d-f992-4ee6-9742-3a04617469f1',
+ name: 'process'
})
];