diff --git a/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts b/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts index 489d3f3514..7a5960f8fb 100644 --- a/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts +++ b/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts @@ -63,7 +63,7 @@ describe('Form Field Component - Dropdown Widget', () => { await apiService.login(testUser.username, testUser.password); const processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); + .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownOptionsProcess, simpleApp); await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); @@ -87,7 +87,7 @@ describe('Form Field Component - Dropdown Widget', () => { await appListCloudComponent.goToApp(simpleApp); }); - it('[C290069] Should be able to read rest service dropdown options, save and complete the task form', async () => { + it('[C309878] Should be able to select a dropdown option, save and complete the task form', async () => { await taskFilter.clickTaskFilter('my-tasks'); await taskList.getDataTable().waitTillContentLoaded(); @@ -97,15 +97,15 @@ describe('Form Field Component - Dropdown Widget', () => { await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); await taskFormCloudComponent.formFields().checkFormIsDisplayed(); - await taskFormCloudComponent.formFields().checkWidgetIsVisible('Dropdown097maj'); - await dropdown.selectOption('Clementine Bauch', 'dropdown-cloud-widget mat-select'); + await taskFormCloudComponent.formFields().checkWidgetIsVisible('DropdownOptions'); + await dropdown.selectOption('option2', 'dropdown-cloud-widget mat-select'); - await expect(await dropdown.getSelectedOptionText('Dropdown097maj')).toBe('Clementine Bauch'); + await expect(await dropdown.getSelectedOptionText('DropdownOptions')).toBe('option2'); await taskFormCloudComponent.checkSaveButtonIsDisplayed(); await taskFormCloudComponent.clickSaveButton(); - await expect(await dropdown.getSelectedOptionText('Dropdown097maj')).toBe('Clementine Bauch'); + await expect(await dropdown.getSelectedOptionText('DropdownOptions')).toBe('option2'); await taskFormCloudComponent.checkCompleteButtonIsDisplayed(); await taskFormCloudComponent.clickCompleteButton(); @@ -122,9 +122,9 @@ describe('Form Field Component - Dropdown Widget', () => { await taskList.selectRow(task.entry.name); await taskFormCloudComponent.formFields().checkFormIsDisplayed(); - await taskFormCloudComponent.formFields().checkWidgetIsVisible('Dropdown097maj'); + await taskFormCloudComponent.formFields().checkWidgetIsVisible('DropdownOptions'); - await expect(await dropdown.getSelectedOptionText('Dropdown097maj')).toBe('Clementine Bauch'); + await expect(await dropdown.getSelectedOptionText('DropdownOptions')).toBe('option2'); await taskFormCloudComponent.checkCompleteButtonIsNotDisplayed(); }); diff --git a/e2e/process-services-cloud/process/process-header-cloud.e2e.ts b/e2e/process-services-cloud/process/process-header-cloud.e2e.ts index d4e6ab3cd0..93b1f1ea86 100644 --- a/e2e/process-services-cloud/process/process-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/process/process-header-cloud.e2e.ts @@ -69,11 +69,11 @@ describe('Process Header cloud component', () => { await apiService.login(testUser.username, testUser.password); - const dropdownRestProcess = await processDefinitionService.getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); + const simpleProcess = await processDefinitionService.getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.simpleProcess, simpleApp); const processparent = await processDefinitionService.getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SUB_PROCESS_APP.processes.processparent, subProcessApp); - runningProcess = await processInstancesService.createProcessInstance(dropdownRestProcess.entry.key, + runningProcess = await processInstancesService.createProcessInstance(simpleProcess.entry.key, simpleApp, { name: StringUtil.generateRandomString(), businessKey: 'test' }); runningCreatedDate = moment(runningProcess.entry.startDate).format(formatDate); diff --git a/e2e/process-services-cloud/task-list/task-form-cloud-component.e2e.ts b/e2e/process-services-cloud/task-list/task-form-cloud-component.e2e.ts index 7f1e7de0a0..7c6f31764b 100644 --- a/e2e/process-services-cloud/task-list/task-form-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/task-list/task-form-cloud-component.e2e.ts @@ -28,7 +28,8 @@ import { TaskFormCloudComponent, TaskHeaderCloudPage, TasksService, - FormCloudService + FormCloudService, + Logger } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../../core/pages/navigation-bar.page'; import { TasksCloudDemoPage } from './../pages/tasks-cloud-demo.page'; @@ -36,6 +37,7 @@ import { TasksCloudDemoPage } from './../pages/tasks-cloud-demo.page'; describe('Task form cloud component', () => { const candidateBaseApp = browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.name; + const candidateBaseAppProcesses = browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.processes; const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name; const simpleAppProcess = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes; const simpleAppForm = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms; @@ -72,66 +74,69 @@ describe('Task form cloud component', () => { let dateTimerTaskId, dateTimerTask, dateTimerChangedTaskId, dateTimerChangedTask, dropdownOptionsTask; beforeAll(async () => { - await apiService.loginWithProfile('hrUser'); + try { + await apiService.loginWithProfile('hrUser'); + createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); - createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp); - assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); - await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp); + const formToTestValidationsKey = await formCloudService.getIdByFormName(candidateBaseApp, + browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.forms.formtotestvalidations); - const formToTestValidationsKey = await formCloudService.getIdByFormName(candidateBaseApp, - browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.forms.formtotestvalidations); + formValidationsTask = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), candidateBaseApp, formToTestValidationsKey); + await tasksService.claimTask(formValidationsTask.entry.id, candidateBaseApp); - formValidationsTask = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), candidateBaseApp, formToTestValidationsKey); - await tasksService.claimTask(formValidationsTask.entry.id, candidateBaseApp); + toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); + await tasksService.claimTask(toBeCompletedTask.entry.id, candidateBaseApp); - toBeCompletedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); - await tasksService.claimTask(toBeCompletedTask.entry.id, candidateBaseApp); + completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateBaseApp); + await tasksService.claimTask(completedTask.entry.id, candidateBaseApp); + await tasksService.createAndCompleteTask(completedTaskName, candidateBaseApp); - completedTask = await tasksService.createStandaloneTask(assignedTaskName, candidateBaseApp); - await tasksService.claimTask(completedTask.entry.id, candidateBaseApp); - await tasksService.createAndCompleteTask(completedTaskName, candidateBaseApp); + let processDefinition = await processDefinitionService + .getProcessDefinitionByName(candidateBaseAppProcesses.candidateUserProcess, candidateBaseApp); - let processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.processes.candidateUserProcess, candidateBaseApp); + const candidateUsersProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); - const candidateUsersProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + const processInstanceTasks = await queryService.getProcessInstanceTasks(candidateUsersProcessInstance.entry.id, candidateBaseApp); + candidateUsersTask = processInstanceTasks.list.entries[0]; + await tasksService.claimTask(candidateUsersTask.entry.id, candidateBaseApp); - const processInstanceTasks = await queryService.getProcessInstanceTasks(candidateUsersProcessInstance.entry.id, candidateBaseApp); - candidateUsersTask = processInstanceTasks.list.entries[0]; - await tasksService.claimTask(candidateUsersTask.entry.id, candidateBaseApp); + processDefinition = await processDefinitionService + .getProcessDefinitionByName(candidateBaseAppProcesses.candidateUserProcess, candidateBaseApp); - processDefinition = await processDefinitionService - .getProcessDefinitionByName(simpleAppProcess.dropdownrestprocess, simpleApp); + const formProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, candidateBaseApp); + const formTasks = await queryService.getProcessInstanceTasks(formProcess.entry.id, candidateBaseApp); + formTaskId = formTasks.list.entries[0].entry.id; - const formProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - const formTasks = await queryService.getProcessInstanceTasks(formProcess.entry.id, simpleApp); - formTaskId = formTasks.list.entries[0].entry.id; + const dropdownOptionsId = await formCloudService.getIdByFormName(simpleApp, simpleAppForm.dropdownWithOptions.name); + dropdownOptionsTask = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), + simpleApp, dropdownOptionsId); + await tasksService.claimTask(dropdownOptionsTask.entry.id, simpleApp); - const dropdownOptionsId = await formCloudService.getIdByFormName(simpleApp, simpleAppForm.dropdownWithOptions.name); - dropdownOptionsTask = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), - simpleApp, dropdownOptionsId); - await tasksService.claimTask(dropdownOptionsTask.entry.id, simpleApp); + const timerProcessDefinition = await processDefinitionService + .getProcessDefinitionByName(simpleAppProcess.intermediateDateProcessVarTimer, simpleApp); + const dateTimerProcess = await processInstancesService.createProcessInstance(timerProcessDefinition.entry.key, simpleApp); + dateTimerTask = await queryService.getProcessInstanceTasks(dateTimerProcess.entry.id, simpleApp); + dateTimerTaskId = dateTimerTask.list.entries[0].entry.id; - const timerProcessDefinition = await processDefinitionService - .getProcessDefinitionByName(simpleAppProcess.intermediateDateProcessVarTimer, simpleApp); - const dateTimerProcess = await processInstancesService.createProcessInstance(timerProcessDefinition.entry.key, simpleApp); - dateTimerTask = await queryService.getProcessInstanceTasks(dateTimerProcess.entry.id, simpleApp); - dateTimerTaskId = dateTimerTask.list.entries[0].entry.id; + const timerChangedProcessDefinition = await processDefinitionService + .getProcessDefinitionByName(simpleAppProcess.intermediateDateProcessVarTimer, simpleApp); + const dateTimerChangedProcess = await processInstancesService.createProcessInstance(timerChangedProcessDefinition.entry.key, simpleApp); + dateTimerChangedTask = await queryService.getProcessInstanceTasks(dateTimerChangedProcess.entry.id, simpleApp); + dateTimerChangedTaskId = dateTimerChangedTask.list.entries[0].entry.id; - const timerChangedProcessDefinition = await processDefinitionService - .getProcessDefinitionByName(simpleAppProcess.intermediateDateProcessVarTimer, simpleApp); - const dateTimerChangedProcess = await processInstancesService.createProcessInstance(timerChangedProcessDefinition.entry.key, simpleApp); - dateTimerChangedTask = await queryService.getProcessInstanceTasks(dateTimerChangedProcess.entry.id, simpleApp); - dateTimerChangedTaskId = dateTimerChangedTask.list.entries[0].entry.id; + /* cspell: disable-next-line */ + const assigneeProcessDefinition = await processDefinitionService.getProcessDefinitionByName(simpleAppProcess.calledprocess, simpleApp); + const assigneeProcess = await processInstancesService.createProcessInstance(assigneeProcessDefinition.entry.key, simpleApp); + assigneeReleaseTask = await queryService.getProcessInstanceTasks(assigneeProcess.entry.id, simpleApp); + assigneeTaskId = assigneeReleaseTask.list.entries[0].entry.id; - /* cspell: disable-next-line */ - const assigneeProcessDefinition = await processDefinitionService.getProcessDefinitionByName(simpleAppProcess.calledprocess, simpleApp); - const assigneeProcess = await processInstancesService.createProcessInstance(assigneeProcessDefinition.entry.key, simpleApp); - assigneeReleaseTask = await queryService.getProcessInstanceTasks(assigneeProcess.entry.id, simpleApp); - assigneeTaskId = assigneeReleaseTask.list.entries[0].entry.id; - - await loginSSOPage.loginWithProfile('hrUser'); + await loginSSOPage.loginWithProfile('hrUser'); + } catch (error) { + Logger.error('Error in beforeAll: ', error); + } }, 5 * 60 * 1000); @@ -146,7 +151,7 @@ describe('Task form cloud component', () => { }); it('[C310366] Should refresh buttons and form after an action is complete', async () => { - await appListCloudComponent.goToApp(simpleApp); + await appListCloudComponent.goToApp(candidateBaseApp); await taskFilter.clickTaskFilter(myTasksFilter); await taskList.getDataTable().waitTillContentLoaded(); diff --git a/e2e/process-services-cloud/task-list/task-list-properties.e2e.ts b/e2e/process-services-cloud/task-list/task-list-properties.e2e.ts index 7fccc20d6b..dc456e44d0 100644 --- a/e2e/process-services-cloud/task-list/task-list-properties.e2e.ts +++ b/e2e/process-services-cloud/task-list/task-list-properties.e2e.ts @@ -83,7 +83,7 @@ describe('Edit task filters and task list properties', () => { await tasksService.claimTask(notDisplayedTask.entry.id, candidateBaseApp); processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); + .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.candidateUsersGroup, simpleApp); processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); diff --git a/e2e/process-services-cloud/task-list/tasks-custom-filters.e2e.ts b/e2e/process-services-cloud/task-list/tasks-custom-filters.e2e.ts index e9230b4059..ff71f48fb9 100644 --- a/e2e/process-services-cloud/task-list/tasks-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/task-list/tasks-custom-filters.e2e.ts @@ -169,7 +169,7 @@ describe('Task filters cloud', () => { beforeEach(async () => { const processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); + .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.candidateUsersGroup, simpleApp); const processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); taskAssigned = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index d1e8fda4f2..9c451ab743 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -5,6 +5,5 @@ "C279931": "login problem APS not basic", "C279930": "login problem APS not basic", "C269081": "https://alfresco.atlassian.net/browse/ADF-5385", - "C272819": "https://alfresco.atlassian.net/browse/ADF-5385", - "C290069": "https://alfresco.atlassian.net/browse/ADF-5387" + "C272819": "https://alfresco.atlassian.net/browse/ADF-5385" } diff --git a/e2e/resources/activiti7/simpleapp.zip b/e2e/resources/activiti7/simpleapp.zip index 92656dfeaa..43d94e70ec 100644 Binary files a/e2e/resources/activiti7/simpleapp.zip and b/e2e/resources/activiti7/simpleapp.zip differ diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts index 2f3c84912b..1a4b48c242 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts @@ -146,25 +146,41 @@ describe('DropdownCloudWidgetComponent', () => { }); })); - it('should load data from restUrl and populate options', async(() => { + it('should load data from restUrl and populate options', async () => { + const jsonDataSpy = spyOn(formCloudService, 'getDropDownJsonData').and.returnValue(of(fakeOptionList)); widget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), { id: 'dropdown-id', name: 'date-name', type: 'dropdown-cloud', - readOnly: 'true', + readOnly: 'false', restUrl: 'fake-rest-url', optionType: 'rest', restIdProperty: 'name' }); - const jsonDataSpy = spyOn(formCloudService, 'getDropDownJsonData').and.returnValue(of(fakeOptionList)); - const optOne = fixture.debugElement.queryAll(By.css('[id="mat-option-1"]')); + widget.ngOnInit(); fixture.detectChanges(); - fixture.whenStable().then(() => { - expect(jsonDataSpy).toHaveBeenCalled(); - expect(optOne).not.toBeNull(); - }); - })); + await fixture.whenStable(); + + const dropdown = fixture.debugElement.query(By.css('mat-select')); + dropdown.nativeElement.click(); + fixture.detectChanges(); + await fixture.whenStable(); + + const optOne = fixture.debugElement.queryAll(By.css('[id="option_1"]')); + const optTwo = fixture.debugElement.queryAll(By.css('[id="option_2"]')); + const optThree = fixture.debugElement.queryAll(By.css('[id="option_3"]')); + const allOptions = fixture.debugElement.queryAll(By.css('mat-option')); + + expect(jsonDataSpy).toHaveBeenCalled(); + expect(allOptions.length).toEqual(3); + expect(optOne.length).toBe(1); + expect(optTwo.length).toBe(1); + expect(optThree.length).toBe(1); + expect(optOne[0].nativeElement.innerText).toEqual('option_1'); + expect(optTwo[0].nativeElement.innerText).toEqual('option_2'); + expect(optThree[0].nativeElement.innerText).toEqual('option_3'); + }); it('should preselect dropdown widget value when Json (rest call) passed', (done) => { widget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), { diff --git a/lib/testing/src/lib/process-services-cloud/resources/resources.json b/lib/testing/src/lib/process-services-cloud/resources/resources.json index 91de17c8f0..9de4aa5143 100644 --- a/lib/testing/src/lib/process-services-cloud/resources/resources.json +++ b/lib/testing/src/lib/process-services-cloud/resources/resources.json @@ -79,7 +79,7 @@ "processes": { "processwithvariables": "processwithvariables", "simpleProcess": "simpleprocess", - "dropdownrestprocess": "dropdownrestprocess", + "dropdownOptionsProcess": "dropdownoptionsprocess", "multilingualprocess": "multilingualprocess", "processWithTabVisibility": "processwithtabvisibility", "startmessageevent": "start-message-event", @@ -141,7 +141,7 @@ "calledSimple":"called-simple", "calledInPool":"called-in-pool", "paralleltasks": "paralleltasks", - "candidateusersgroup": "candidateusersgroup", + "candidateUsersGroup": "candidateusersgroup", "candidateUserProcess": "candidateuserprocess", "outputVariablesMapping": "output-variables-mapping", "outcomeVisibilityProcess": "outcome-visib-process",