diff --git a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts index 5c108df856..22c85059f0 100644 --- a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts @@ -18,8 +18,10 @@ import TestConfig = require('../test.config'); import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; -import { LoginSSOPage, SettingsPage, AppListCloudPage, StringUtil, TaskHeaderCloudPage, - StartTasksCloudPage, PeopleCloudComponentPage } from '@alfresco/adf-testing'; +import { + LoginSSOPage, SettingsPage, AppListCloudPage, StringUtil, TaskHeaderCloudPage, + StartTasksCloudPage, PeopleCloudComponentPage, TasksService, ApiService, IdentityService +} from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Start Task', () => { @@ -33,6 +35,7 @@ describe('Start Task', () => { const startTask = new StartTasksCloudPage(); const peopleCloudComponent = new PeopleCloudComponentPage(); const standaloneTaskName = StringUtil.generateRandomString(5); + const reassignTaskName = StringUtil.generateRandomString(5); const unassignedTaskName = StringUtil.generateRandomString(5); const taskName255Characters = StringUtil.generateRandomString(255); const taskNameBiggerThen255Characters = StringUtil.generateRandomString(256); @@ -41,14 +44,36 @@ describe('Start Task', () => { const dateValidationError = 'Date format DD/MM/YYYY'; const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; const appName = 'simple-app'; - let silentLogin; + let silentLogin, activitiUser; + let tasksService: TasksService; + let identityService: IdentityService; + + beforeAll(async(done) => { + const apiService = new ApiService('activiti', TestConfig.adf.hostBPM, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + identityService = new IdentityService(apiService); + tasksService = new TasksService(apiService); + activitiUser = await identityService.createIdentityUser(); - beforeAll((done) => { silentLogin = false; settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin); loginSSOPage.clickOnSSOButton(); browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(user, password); + done(); + }); + + afterAll(async (done) => { + const tasks = [ standaloneTaskName, unassignedTaskName, reassignTaskName ]; + for (let i = 0; i < tasks.length; i++) { + const taskId = await tasksService.getTaskId(tasks[i], appName); + await tasksService.deleteTask(taskId, appName); + } + await identityService.deleteIdentityUser(activitiUser.idIdentityService); + done(); + }); + + beforeEach((done) => { navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); appListCloudComponent.checkAppIsDisplayed(appName); @@ -109,7 +134,7 @@ describe('Start Task', () => { tasksCloudDemoPage.openNewTaskForm(); startTask.checkFormIsDisplayed(); startTask.addName(standaloneTaskName); - peopleCloudComponent.searchAssigneeAndSelect('Super Admin'); + peopleCloudComponent.searchAssigneeAndSelect(`${activitiUser.firstName}` + ' ' + `${activitiUser.lastName}`); startTask.checkStartButtonIsEnabled(); startTask.clickStartButton(); tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); @@ -139,6 +164,24 @@ describe('Start Task', () => { tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(unassignedTaskName); }); + it('[C305050] Should be able to reassign the removed user when starting a new task', () => { + + tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); + startTask.addName(reassignTaskName); + expect(peopleCloudComponent.getAssignee()).toBe('Administrator ADF'); + startTask.clearField(peopleCloudComponent.peopleCloudSearch); + peopleCloudComponent.searchAssignee(user); + peopleCloudComponent.checkUserIsDisplayed('Administrator ADF'); + peopleCloudComponent.selectAssigneeFromList('Administrator ADF'); + startTask.clickStartButton(); + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(reassignTaskName); + tasksCloudDemoPage.taskListCloudComponent().selectRow(reassignTaskName); + expect(taskHeaderCloudPage.getAssignee()).toBe('admin.adf'); + }); + it('[C297675] Should create a task unassigned when assignee field is empty in Start Task form', () => { tasksCloudDemoPage.openNewTaskForm(); diff --git a/lib/testing/src/lib/core/actions/identity/tasks.service.ts b/lib/testing/src/lib/core/actions/identity/tasks.service.ts index d0d726da5c..e399f92f9a 100644 --- a/lib/testing/src/lib/core/actions/identity/tasks.service.ts +++ b/lib/testing/src/lib/core/actions/identity/tasks.service.ts @@ -86,6 +86,16 @@ export class TasksService { return data; } + async getTaskId(taskName, appName) { + const path = '/' + appName + '/query/v1/tasks'; + const method = 'GET'; + + const queryParams = {name: taskName}, postBody = {}; + + const data = await this.api.performBpmOperation(path, method, queryParams, postBody); + return data.list.entries[0].entry.id; + } + async createStandaloneSubtask(parentTaskId, appName, name) { const path = '/' + appName + '/rb/v1/tasks'; const method = 'POST';