diff --git a/e2e/process-services-cloud/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-process-cloud.e2e.ts index 797c95608d..1be6a32ddd 100644 --- a/e2e/process-services-cloud/start-process-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-process-cloud.e2e.ts @@ -86,6 +86,8 @@ describe('Start Process', () => { await appListCloudComponent.checkAppIsDisplayed(simpleApp); await appListCloudComponent.goToApp(simpleApp); await processCloudDemoPage.openNewProcessForm(); + await startProcessPage.selectFirstOptionFromProcessDropdown(); + await startProcessPage.enterProcessName(processName255Characters); await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(true); @@ -98,6 +100,8 @@ describe('Start Process', () => { await appListCloudComponent.checkAppIsDisplayed(simpleApp); await appListCloudComponent.goToApp(simpleApp); await processCloudDemoPage.openNewProcessForm(); + await startProcessPage.selectFirstOptionFromProcessDropdown(); + await startProcessPage.clearField(startProcessPage.processNameInput); await startProcessPage.enterProcessName(processName); await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(true); 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 7d00baa807..3576ae4d5b 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 @@ -26,7 +26,7 @@ import { StartProcessCloudComponent } from './start-process-cloud.component'; import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module'; import { ProcessCloudModule } from '../../process-cloud.module'; import { fakeProcessDefinitions, fakeStartForm, fakeStartFormNotValid, - fakeProcessInstance, fakeProcessPayload, fakeNoNameProcessDefinitions } from '../mock/start-process.component.mock'; + fakeProcessInstance, fakeProcessPayload, fakeNoNameProcessDefinitions, fakeSingleProcessDefinition } from '../mock/start-process.component.mock'; import { By } from '@angular/platform-browser'; describe('StartProcessCloudComponent', () => { @@ -37,6 +37,7 @@ describe('StartProcessCloudComponent', () => { let formCloudService: FormCloudService; let getDefinitionsSpy: jasmine.Spy; let startProcessSpy: jasmine.Spy; + let formDefinitionSpy: jasmine.Spy; const selectOptionByName = (name: string) => { @@ -133,8 +134,9 @@ describe('StartProcessCloudComponent', () => { it('should be able to start a process with a valid form', async(() => { component.processDefinitionName = 'processwithform'; + getDefinitionsSpy.and.returnValue(of(fakeSingleProcessDefinition(component.processDefinitionName))); fixture.detectChanges(); - getDefinitionsSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartForm)); + formDefinitionSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartForm)); const change = new SimpleChange(null, 'MyApp', true); component.ngOnChanges({ 'appName': change }); @@ -153,8 +155,9 @@ describe('StartProcessCloudComponent', () => { it('should NOT be able to start a process with a form NOT valid', async(() => { component.processDefinitionName = 'processwithform'; + getDefinitionsSpy.and.returnValue(of(fakeSingleProcessDefinition(component.processDefinitionName))); fixture.detectChanges(); - getDefinitionsSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartFormNotValid)); + formDefinitionSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartFormNotValid)); const change = new SimpleChange(null, 'MyApp', true); component.ngOnChanges({ 'appName': change }); @@ -173,9 +176,10 @@ describe('StartProcessCloudComponent', () => { it('should be able to start a process with a prefilled valid form', async(() => { component.processDefinitionName = 'processwithform'; + getDefinitionsSpy.and.returnValue(of(fakeSingleProcessDefinition(component.processDefinitionName))); component.values = [{'name': 'firstName', 'value': 'FakeName'}, {'name': 'lastName', 'value': 'FakeLastName'}]; fixture.detectChanges(); - getDefinitionsSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartForm)); + formDefinitionSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartForm)); const change = new SimpleChange(null, 'MyApp', true); component.ngOnChanges({ 'appName': change }); @@ -196,15 +200,17 @@ describe('StartProcessCloudComponent', () => { it('should NOT be able to start a process with a prefilled NOT valid form', async(() => { component.processDefinitionName = 'processwithform'; + getDefinitionsSpy.and.returnValue(of(fakeSingleProcessDefinition(component.processDefinitionName))); component.values = [{'name': 'firstName', 'value': 'FakeName'}, {'name': 'lastName', 'value': 'FakeLastName'}]; fixture.detectChanges(); - getDefinitionsSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartFormNotValid)); + formDefinitionSpy = spyOn(formCloudService, 'getForm').and.returnValue(of(fakeStartFormNotValid)); const change = new SimpleChange(null, 'MyApp', true); component.ngOnChanges({ 'appName': change }); fixture.detectChanges(); fixture.whenStable().then(() => { + expect(formDefinitionSpy).toHaveBeenCalled(); const firstNameEl = fixture.nativeElement.querySelector('#firstName'); expect(firstNameEl).toBeDefined(); expect(firstNameEl.value).toEqual('FakeName'); @@ -295,20 +301,6 @@ describe('StartProcessCloudComponent', () => { }); })); - it('should select processDefinition based on processDefinition input', async(() => { - component.name = 'My new process'; - component.processDefinitionName = 'processwithoutform1'; - fixture.detectChanges(); - - const change = new SimpleChange(null, 'MyApp', true); - component.ngOnChanges({ 'appName': change }); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - expect(component.processPayloadCloud.processDefinitionKey).toBe(JSON.parse(JSON.stringify(fakeProcessDefinitions[0])).key); - }); - })); - it('should select automatically the processDefinition if the app contain only one', async(() => { getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of([fakeProcessDefinitions[0]])); const change = new SimpleChange('myApp', 'myApp1', true); @@ -429,6 +421,16 @@ describe('StartProcessCloudComponent', () => { tick(3000); expect(component.filteredProcesses.length).toEqual(1); })); + + it('should display the process definion field as empty if are more than one process definition in the list', async(() => { + getDefinitionsSpy.and.returnValue(of(fakeProcessDefinitions)); + component.ngOnChanges({ appName: change }); + fixture.detectChanges(); + fixture.whenStable().then(() => { + const processDefinitionInput = fixture.nativeElement.querySelector('#processDefinitionName'); + expect(processDefinitionInput.textContent).toEqual(''); + }); + })); }); describe('start process', () => { 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 2fadbbb2de..c453a1b175 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 @@ -179,7 +179,7 @@ export class StartProcessCloudComponent implements OnChanges, OnInit, OnDestroy .pipe(takeUntil(this.onDestroy$)) .subscribe((processDefinitionRepresentations: ProcessDefinitionCloud[]) => { this.processDefinitionList = processDefinitionRepresentations; - if (processDefinitionRepresentations.length > 0) { + if (processDefinitionRepresentations.length === 1) { this.selectDefaultProcessDefinition(); } }, 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 1ebaba9849..0c79992604 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 @@ -64,6 +64,18 @@ export let fakeProcessDefinitions: ProcessDefinitionCloud[] = [ }) ]; +export function fakeSingleProcessDefinition(name: string): ProcessDefinitionCloud[] { + return [ + new ProcessDefinitionCloud({ + appName: 'startformwithoutupload', + formKey: 'form-a5d50817-5183-4850-802d-17af54b2632f', + id: 'd00c0237-8772-11e9-859a-428f83d5904f', + key: 'process-5151ad1d-f992-4ee6-9742-3a04617469fe', + name: name + }) + ]; +} + export let fakeNoNameProcessDefinitions: ProcessDefinitionCloud[] = [ new ProcessDefinitionCloud({ appName: 'myApp', diff --git a/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts index cd8a880860..7198692e2a 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts @@ -60,6 +60,13 @@ export class StartProcessCloudPage { await this.selectOption(name); } + async selectFirstOptionFromProcessDropdown(): Promise { + await this.clickProcessDropdownArrow(); + const selectFirstProcessDropdown = element.all(by.css('.mat-option-text')).first(); + await BrowserVisibility.waitUntilElementIsPresent(selectFirstProcessDropdown); + await BrowserActions.click(selectFirstProcessDropdown); + } + async clickProcessDropdownArrow(): Promise { await BrowserActions.click(this.selectProcessDropdownArrow); }