From 63969d65e760b33aede050dfb13c8858499b3331 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 23 Feb 2021 16:58:31 +0000 Subject: [PATCH] [AAE-3992] Process Filter bug fixes and improvements (#6599) * bug fixes * bug fixes * bug fixes * cleanup tests * travis workaround * travis workaround * travis workaround * travis workaround * travis workaround * travis workaround * Revert "travis workaround" This reverts commit b67efccfb0aab8c7f6b9235d01525487771b8123. * Revert "travis workaround" This reverts commit 448f4e6d1211771e914f35183860af6df3452c16. * Revert "travis workaround" This reverts commit 542fae649c0501a9150ccac2e5a2cd54ee39a690. * Revert "travis workaround" This reverts commit 12f58568fbb0f8d2defb4c21a3ab1683bc8aa312. * Revert "travis workaround" This reverts commit b0ffef3bee0f81faf6088be8b5c2b072ad2762e7. * Revert "travis workaround" This reverts commit c6d95a2ff3b38b543fea83d3fc53016ac657b3bb. * service fixes * remove junk tests * code fixes * reduce code complexity * update e2e * update e2e * fix i18n * e2e fixes * bug fixes * rebase and fix * properly serialize query params * rework process filters demo * remove dead code * code fixes * code fixes * e2e improvements * fix bug and remove e2e testing a bug * bug fixes for date ranges * fix e2e * fix unit test * reusable code * fix flaky e2e * fix angular cli version * remove useless e2e (already tested by unit tests) * remove useless e2e (already tested by unit tests) * demo shell fixes * remove fit * disable flaky test * update code as per review suggestions * fix after rebase * fix after rebase --- demo-shell/src/app.config.json | 30 +- .../cloud/cloud-filters-demo.component.ts | 19 +- .../community-processes-cloud.component.ts | 2 +- .../community-task-cloud.component.ts | 2 +- .../cloud/processes-cloud-demo.component.html | 9 +- .../cloud/processes-cloud-demo.component.scss | 0 .../cloud/processes-cloud-demo.component.ts | 87 +- .../services/cloud-process-filters.service.ts | 55 + .../cloud/tasks-cloud-demo.component.ts | 2 +- docs/core/components/json-cell.component.md | 14 +- .../config/process-list-cloud.config.ts | 20 +- .../config/task-list-cloud.config.ts | 26 +- .../edit-process-filters-component.e2e.ts | 62 +- .../process-custom-filters.e2e.ts | 12 +- .../process-filter-results.e2e.ts | 13 +- .../process-list-cloud-action-menu.e2e.ts | 127 -- .../task-list-cloud-action-menu.e2e.ts | 113 -- e2e/protractor.excludes.json | 4 +- .../src/lib/i18n/en.json | 2 + .../edit-process-filter-cloud.component.html | 3 +- ...dit-process-filter-cloud.component.spec.ts | 176 +-- .../edit-process-filter-cloud.component.ts | 240 ++-- ...process-filter-dialog-cloud.component.html | 2 +- .../services/process-filter-cloud.service.ts | 66 +- .../process-list-cloud.component.spec.ts | 10 +- .../process-list-cloud.component.ts | 9 +- .../mock/process-list-service.mock.ts | 20 +- .../models/process-cloud-preset.model.ts | 4 +- .../process-list-cloud.service.spec.ts | 27 +- .../services/process-list-cloud.service.ts | 28 +- ...base-edit-task-filter-cloud.component.html | 49 +- .../task-filter-dialog-cloud.component.html | 2 +- .../base-task-list-cloud.component.ts | 10 +- .../service-task-list-cloud.component.spec.ts | 44 +- .../task-list-cloud.component.spec.ts | 92 +- .../task-list/mock/fake-task-response.mock.ts | 138 +-- .../models/task-preset-cloud.model.ts | 14 +- .../service-task-list-cloud.service.spec.ts | 24 - .../service-task-list-cloud.service.ts | 13 +- .../services/task-list-cloud.service.spec.ts | 26 +- .../services/task-list-cloud.service.ts | 26 +- ...dit-process-filter-cloud-component.page.ts | 85 +- .../edit-task-filter-cloud-component.page.ts | 2 - .../process-filters-cloud-component.page.ts | 57 +- package-lock.json | 1064 ++++++----------- package.json | 2 +- 46 files changed, 1057 insertions(+), 1775 deletions(-) delete mode 100644 demo-shell/src/app/components/cloud/processes-cloud-demo.component.scss create mode 100644 demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts delete mode 100644 e2e/process-services-cloud/process-list-cloud-action-menu.e2e.ts delete mode 100644 e2e/process-services-cloud/task-list-cloud-action-menu.e2e.ts diff --git a/demo-shell/src/app.config.json b/demo-shell/src/app.config.json index 8296d725ce..d91ba90295 100644 --- a/demo-shell/src/app.config.json +++ b/demo-shell/src/app.config.json @@ -1082,40 +1082,40 @@ "presets": { "default": [ { - "key": "entry.id", + "key": "id", "type": "text", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.ID", "cssClass": "adf-expand-cell-4", "sortable": true }, { - "key": "entry.name", + "key": "name", "type": "text", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.NAME", "sortable": true, "cssClass": "name-column adf-ellipsis-cell" }, { - "key": "entry.status", + "key": "status", "type": "text", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.STATUS", "sortable": true }, { - "key": "entry.priority", + "key": "priority", "type": "text", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY", "sortable": true }, { - "key": "entry.createdDate", + "key": "createdDate", "type": "date", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.CREATED_DATE", "sortable": true, "format": "timeAgo" }, { - "key": "entry.lastModified", + "key": "lastModified", "type": "date", "title": "ADF_CLOUD_TASK_LIST.PROPERTIES.LAST_MODIFIED", "sortable": true, @@ -1128,32 +1128,32 @@ "presets": { "default": [ { - "key": "entry.id", + "key": "id", "type": "text", "title": "ADF_CLOUD_SERVICE_TASK_LIST.PROPERTIES.ID", "sortable": true }, { - "key": "entry.activityName", + "key": "activityName", "type": "text", "title": "ADF_CLOUD_SERVICE_TASK_LIST.PROPERTIES.ACTIVITY_NAME", "sortable": true }, { - "key": "entry.status", + "key": "status", "type": "text", "title": "ADF_CLOUD_SERVICE_TASK_LIST.PROPERTIES.STATUS", "sortable": true }, { - "key": "entry.startedDate", + "key": "startedDate", "type": "date", "title": "ADF_CLOUD_SERVICE_TASK_LIST.PROPERTIES.STARTED_DATE", "sortable": true, "format": "timeAgo" }, { - "key": "entry.completedDate", + "key": "completedDate", "type": "date", "title": "ADF_CLOUD_SERVICE_TASK_LIST.PROPERTIES.COMPLETED_DATE", "sortable": true, @@ -1166,25 +1166,25 @@ "presets": { "default": [ { - "key": "entry.id", + "key": "id", "type": "text", "title": "ADF_CLOUD_PROCESS_LIST.PROPERTIES.ID", "sortable": true }, { - "key": "entry.name", + "key": "name", "type": "text", "title": "ADF_CLOUD_PROCESS_LIST.PROPERTIES.NAME", "sortable": true }, { - "key": "entry.status", + "key": "status", "type": "text", "title": "ADF_CLOUD_PROCESS_LIST.PROPERTIES.STATUS", "sortable": true }, { - "key": "entry.startDate", + "key": "startDate", "type": "date", "title": "ADF_CLOUD_PROCESS_LIST.PROPERTIES.START_DATE", "sortable": true, diff --git a/demo-shell/src/app/components/cloud/cloud-filters-demo.component.ts b/demo-shell/src/app/components/cloud/cloud-filters-demo.component.ts index 8a34e75151..a8f0050b42 100644 --- a/demo-shell/src/app/components/cloud/cloud-filters-demo.component.ts +++ b/demo-shell/src/app/components/cloud/cloud-filters-demo.component.ts @@ -19,6 +19,8 @@ import { Component, ViewEncapsulation, Input, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { CloudLayoutService } from './services/cloud-layout.service'; import { Router, ActivatedRoute } from '@angular/router'; +import { CloudProcessFiltersService } from './services/cloud-process-filters.service'; +import { ProcessFilterCloudModel } from '@alfresco/adf-process-services-cloud'; @Component({ selector: 'app-cloud-filters-demo', templateUrl: './cloud-filters-demo.component.html', @@ -42,7 +44,8 @@ export class CloudFiltersDemoComponent implements OnInit { constructor( private cloudLayoutService: CloudLayoutService, private router: Router, - private route: ActivatedRoute + private route: ActivatedRoute, + private cloudProcessFiltersService: CloudProcessFiltersService ) {} ngOnInit() { @@ -63,11 +66,19 @@ export class CloudFiltersDemoComponent implements OnInit { } onTaskFilterSelected(filter) { - this.router.navigate([`/cloud/${this.appName}/tasks/`], { queryParams: filter }); + if (filter) { + this.router.navigate([`/cloud/${this.appName}/tasks/`], {queryParams: filter}); + } } - onProcessFilterSelected(filter) { - this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filter }); + onProcessFilterSelected(filter: ProcessFilterCloudModel) { + if (filter) { + const {appName} = this; + const {id} = filter; + + const queryParams = this.cloudProcessFiltersService.writeQueryParams(filter, appName, id); + this.router.navigate([`/cloud/${appName}/processes/`], {queryParams}); + } } onTaskFilterOpen(): boolean { diff --git a/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts index c604def8da..e2808711c7 100644 --- a/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-processes-cloud.component.ts @@ -145,6 +145,6 @@ export class CommunityProcessesCloudDemoComponent implements OnInit, OnDestroy { onRowsSelected(nodes) { this.resetSelectedRows(); - this.selectedRows = nodes.map((node) => node.obj.entry); + this.selectedRows = nodes.map((node) => node.obj); } } diff --git a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts index 94c38ddb1c..974b9b5d60 100644 --- a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts @@ -127,7 +127,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy { onRowsSelected(nodes) { this.resetSelectedRows(); - this.selectedRows = nodes.map((node) => node.obj.entry); + this.selectedRows = nodes.map((node) => node.obj); } onFilterChange(filter: any) { diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html index 3876f194d9..63e4a7c24a 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html @@ -2,9 +2,10 @@ @@ -24,7 +25,7 @@ [businessKey]="editedFilter['businessKey']" [lastModifiedFrom]="editedFilter.lastModifiedFrom" [lastModifiedTo]="editedFilter.lastModifiedTo" - [sorting]="sortArray" + [sorting]="[{orderBy: editedFilter.sort, direction: editedFilter.order}]" [selectionMode]="selectionMode" [stickyHeader]="true" [showActions]="actionMenu" diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.scss b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts index 3dcb140d50..ec03653bfd 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts @@ -15,42 +15,24 @@ * limitations under the License. */ -import { Component, ViewChild, OnInit, OnDestroy } from '@angular/core'; -import { - ProcessListCloudComponent, - ProcessFilterCloudModel, - ProcessListCloudSortingModel, - ProcessFiltersCloudComponent -} from '@alfresco/adf-process-services-cloud'; - +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { EditProcessFilterCloudComponent, ProcessFilterAction, ProcessFilterCloudModel, ProcessFilterCloudService } from '@alfresco/adf-process-services-cloud'; import { ActivatedRoute, Router } from '@angular/router'; -import { UserPreferencesService, AppConfigService, DataCellEvent } from '@alfresco/adf-core'; +import { UserPreferencesService, DataCellEvent } from '@alfresco/adf-core'; import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Pagination } from '@alfresco/js-api'; +import { CloudProcessFiltersService } from './services/cloud-process-filters.service'; @Component({ - templateUrl: './processes-cloud-demo.component.html', - styleUrls: ['./processes-cloud-demo.component.scss'] + templateUrl: './processes-cloud-demo.component.html' }) export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { - - public static ACTION_SAVE_AS = 'saveAs'; - public static ACTION_DELETE = 'delete'; - static PROCESS_FILTER_PROPERTY_KEYS = 'adf-edit-process-filter'; - - @ViewChild('processCloud') - processCloud: ProcessListCloudComponent; - - @ViewChild('processFiltersCloud') - processFiltersCloud: ProcessFiltersCloudComponent; - appName: string = ''; - isFilterLoaded: boolean; + isFilterLoaded = false; filterId: string = ''; - sortArray: any = []; selectedRow: any; multiselect: boolean; selectionMode: string; @@ -61,7 +43,11 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { actions: any[] = []; selectedAction: { id: number, name: string, actionType: string}; selectedContextAction: { id: number, name: string, actionType: string}; - processFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] }; + + filterProperties: string[]; + filterSortProperties: string[]; + filterActions: string[]; + processDetailsRedirection: boolean; editedFilter: ProcessFilterCloudModel; @@ -73,24 +59,24 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { private route: ActivatedRoute, private router: Router, private cloudLayoutService: CloudLayoutService, - private userPreference: UserPreferencesService, - private appConfig: AppConfigService) { - const properties = this.appConfig.get>(ProcessesCloudDemoComponent.PROCESS_FILTER_PROPERTY_KEYS); - if (properties) { - this.processFilterProperties = properties; - } + private cloudProcessFiltersService: CloudProcessFiltersService, + private processFilterCloudService: ProcessFilterCloudService, + private userPreference: UserPreferencesService) { } ngOnInit() { - this.isFilterLoaded = false; - this.route.parent.params.subscribe((params) => { - this.appName = params.appName; - }); + this.filterProperties = this.cloudProcessFiltersService.filterProperties; + this.filterSortProperties = this.cloudProcessFiltersService.sortProperties; + this.filterActions = this.cloudProcessFiltersService.actions; this.route.queryParams.subscribe((params) => { this.isFilterLoaded = true; - this.onFilterChange(params); + + this.appName = params.appName; this.filterId = params.id; + + const model = this.cloudProcessFiltersService.readQueryParams(params); + this.loadFilter(model); }); this.cloudLayoutService.settings$ @@ -134,31 +120,26 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { } } - onFilterChange(query: any) { - this.editedFilter = Object.assign({}, query); - this.sortArray = [ - new ProcessListCloudSortingModel({ - orderBy: this.editedFilter.sort, - direction: this.editedFilter.order - }) - ]; + onFilterChange(filter: ProcessFilterCloudModel) { + const queryParams = this.cloudProcessFiltersService.writeQueryParams(filter, this.appName, this.filterId); + this.router.navigate([`/cloud/${this.appName}/processes/`], {queryParams}); } - onProcessFilterAction(filterAction: any) { - if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_DELETE) { + onProcessFilterAction(filterAction: ProcessFilterAction) { + if (filterAction.actionType === EditProcessFilterCloudComponent.ACTION_DELETE) { this.cloudLayoutService.setCurrentProcessFilterParam({ index: 0 }); } else { this.cloudLayoutService.setCurrentProcessFilterParam({ id: filterAction.filter.id }); } - if (filterAction.actionType === ProcessesCloudDemoComponent.ACTION_SAVE_AS) { - this.router.navigate([`/cloud/${this.appName}/processes/`], { queryParams: filterAction.filter }); + if ([EditProcessFilterCloudComponent.ACTION_SAVE, EditProcessFilterCloudComponent.ACTION_SAVE_AS].includes(filterAction.actionType)) { + this.onFilterChange(filterAction.filter); } } onRowsSelected(nodes) { this.resetSelectedRows(); - this.selectedRows = nodes.map((node) => node.obj.entry); + this.selectedRows = nodes.map((node) => node.obj); } onShowRowActionsMenu(event: DataCellEvent) { @@ -197,4 +178,12 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { const action = contextAction.model; this.selectedContextAction = {id: value.id, name: value.name, actionType: action.title}; } + + private loadFilter(model: ProcessFilterCloudModel) { + if (model && model.appName && model.id) { + this.processFilterCloudService.getFilterById(model.appName, model.id).subscribe(filter => { + this.editedFilter = Object.assign({}, filter, model); + }); + } + } } diff --git a/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts b/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts new file mode 100644 index 0000000000..3d74f20dd4 --- /dev/null +++ b/demo-shell/src/app/components/cloud/services/cloud-process-filters.service.ts @@ -0,0 +1,55 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Injectable } from '@angular/core'; +import { ProcessFilterCloudModel, ProcessFilterCloudService } from '@alfresco/adf-process-services-cloud'; +import { AppConfigService } from '@alfresco/adf-core'; + +@Injectable({ providedIn: 'root' }) +export class CloudProcessFiltersService { + constructor(private appConfigService: AppConfigService, private processFilterCloudService: ProcessFilterCloudService) { + } + + get filterProperties(): string[] { + return this.appConfigService.get( + 'adf-edit-process-filter.filterProperties', + ['status', 'sort', 'order', 'processName'] + ); + } + + get sortProperties(): string[] { + return this.appConfigService.get( + 'adf-edit-process-filter.sortProperties', + ['id', 'name', 'status', 'startDate'] + ); + } + + get actions(): string[] { + return this.appConfigService.get( + 'adf-edit-process-filter.actions', + ['save', 'saveAs', 'delete'] + ); + } + + readQueryParams(obj: Object): ProcessFilterCloudModel { + return this.processFilterCloudService.readQueryParams(obj); + } + + writeQueryParams(value: Object, appName?: string, id?: string): Object { + return this.processFilterCloudService.writeQueryParams(value, this.filterProperties, appName, id); + } +} diff --git a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts index 57817e4373..2fccfa7bbb 100644 --- a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.ts @@ -125,7 +125,7 @@ export class TasksCloudDemoComponent implements OnInit, OnDestroy { onRowsSelected(nodes) { this.resetSelectedRows(); - this.selectedRows = nodes.map((node) => node.obj.entry); + this.selectedRows = nodes.map((node) => node.obj); } onFilterChange(filter: any) { diff --git a/docs/core/components/json-cell.component.md b/docs/core/components/json-cell.component.md index 02ba94e1f3..b8fc7e26d5 100644 --- a/docs/core/components/json-cell.component.md +++ b/docs/core/components/json-cell.component.md @@ -12,27 +12,29 @@ Shows a JSON-formatted value inside a datatable component. ## Basic Usage ```html - + - + ``` You can specify the cell inside the `app.config.json` file: -```javascript - "adf-cloud-process-list": { +```json +{ + "adf-cloud-process-list": { "presets": { "default": [ { - "key": "entry.json", + "key": "json", "type": "json", "title": "Json cell value" } ] } - }, + } +} ``` ## Class members diff --git a/e2e/process-services-cloud/config/process-list-cloud.config.ts b/e2e/process-services-cloud/config/process-list-cloud.config.ts index 8cc321584b..c8388f5c93 100644 --- a/e2e/process-services-cloud/config/process-list-cloud.config.ts +++ b/e2e/process-services-cloud/config/process-list-cloud.config.ts @@ -22,62 +22,62 @@ export class ProcessListCloudConfiguration { 'presets': { 'default': [ { - 'key': 'entry.id', + 'key': 'id', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.ID', 'sortable': true }, { - 'key': 'entry.name', + 'key': 'name', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.NAME', 'sortable': true }, { - 'key': 'entry.status', + 'key': 'status', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.STATUS', 'sortable': true }, { - 'key': 'entry.startDate', + 'key': 'startDate', 'type': 'date', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.START_DATE', 'sortable': true, 'format': 'timeAgo' }, { - 'key': 'entry.appName', + 'key': 'appName', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.APP_NAME', 'sortable': true }, { - 'key': 'entry.businessKey', + 'key': 'businessKey', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.BUSINESS_KEY', 'sortable': true }, { - 'key': 'entry.initiator', + 'key': 'initiator', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.STARTED_BY', 'sortable': true }, { - 'key': 'entry.lastModified', + 'key': 'lastModified', 'type': 'date', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.LAST_MODIFIED', 'sortable': true }, { - 'key': 'entry.processDefinitionId', + 'key': 'processDefinitionId', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.PROCESS_DEF_ID', 'sortable': true }, { - 'key': 'entry.processDefinitionKey', + 'key': 'processDefinitionKey', 'type': 'text', 'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.PROCESS_DEF_KEY', 'sortable': true diff --git a/e2e/process-services-cloud/config/task-list-cloud.config.ts b/e2e/process-services-cloud/config/task-list-cloud.config.ts index 069bd4dc7c..45ebe7bfb7 100644 --- a/e2e/process-services-cloud/config/task-list-cloud.config.ts +++ b/e2e/process-services-cloud/config/task-list-cloud.config.ts @@ -25,84 +25,84 @@ export class TaskListCloudConfiguration { 'presets': { 'default': [ { - 'key': 'entry.id', + 'key': 'id', 'type': 'text', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.ID', 'sortable': true }, { - 'key': 'entry.name', + 'key': 'name', 'type': 'text', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.NAME', 'sortable': true, 'cssClass': 'full-width name-column ellipsis-cell' }, { - 'key': 'entry.processDefinitionId', + 'key': 'processDefinitionId', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_DEF_ID', 'sortable': true, 'cssClass': 'full-width name-column ellipsis-cell' }, { - 'key': 'entry.processInstanceId', + 'key': 'processInstanceId', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PROCESS_INSTANCE_ID', 'sortable': true, 'cssClass': 'full-width name-column ellipsis-cell' }, { - 'key': 'entry.status', + 'key': 'status', 'type': 'text', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.STATUS', 'sortable': true }, { - 'key': 'entry.priority', + 'key': 'priority', 'type': 'text', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.PRIORITY', 'sortable': true }, { - 'key': 'entry.createdDate', + 'key': 'createdDate', 'type': 'date', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.CREATED_DATE', 'sortable': true, 'format': 'timeAgo' }, { - 'key': 'entry.lastModified', + 'key': 'lastModified', 'type': 'date', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.LAST_MODIFIED', 'sortable': true, 'format': 'timeAgo' }, { - 'key': 'entry.assignee', + 'key': 'assignee', 'type': 'text', 'title': 'ADF_CLOUD_TASK_LIST.PROPERTIES.ASSIGNEE', 'sortable': true }, { - 'key': 'entry.parentTaskId', + 'key': 'parentTaskId', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PARENT_TASK_ID', 'sortable': true }, { - 'key': 'entry.priority', + 'key': 'priority', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.PRIORITY', 'sortable': true }, { - 'key': 'entry.standalone', + 'key': 'standalone', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.STAND_ALONE', 'sortable': true }, { - 'key': 'entry.owner', + 'key': 'owner', 'type': 'text', 'title': 'ADF_CLOUD_EDIT_TASK_FILTER.LABEL.OWNER', 'sortable': true diff --git a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts index 15bc856cfb..3e4fea490d 100644 --- a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts +++ b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts @@ -81,10 +81,6 @@ describe('Edit process filters cloud', () => { await editProcessFilter.checkSaveButtonIsDisplayed(); await editProcessFilter.checkSaveAsButtonIsDisplayed(); await editProcessFilter.checkDeleteButtonIsDisplayed(); - await expect(await editProcessFilter.checkSaveButtonIsEnabled()).toEqual(false); - await expect(await editProcessFilter.checkSaveAsButtonIsEnabled()).toEqual(false); - await expect(await editProcessFilter.checkDeleteButtonIsEnabled()).toEqual(false); - await editProcessFilter.openFilter(); }); it('[C586757] Delete Save and Save as actions should be displayed and enabled when clicking on custom filter header', async () => { @@ -110,10 +106,7 @@ describe('Edit process filters cloud', () => { await expect(await processFilter.getActiveFilterName()).toBe('New'); await editProcessFilter.openFilter(); - await expect(await editProcessFilter.checkSaveButtonIsEnabled()).toEqual(false); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); - await expect(await editProcessFilter.checkSaveAsButtonIsEnabled()).toEqual(false); - await expect(await editProcessFilter.checkDeleteButtonIsEnabled()).toEqual(true); await processFilter.clickAllProcessesFilter(); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Start Date'); await processFilter.clickProcessFilter('custom-new'); @@ -121,50 +114,10 @@ describe('Edit process filters cloud', () => { await editProcessFilter.clickDeleteButton(); }); - it('[C291806] Two process filters with same name can be created when clicking the Save As button', async () => { - await editProcessFilter.setSortFilterDropDown('Id'); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('New'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); - - await browser.driver.sleep(1000); - - await editProcessFilter.openFilter(); - await editProcessFilter.checkCustomiseFilterHeaderIsExpanded(); - await expect(await processFilter.getActiveFilterName()).toBe('New'); - await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); - await editProcessFilter.setSortFilterDropDown('Process Name'); - await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Process Name'); - await editProcessFilter.clickSaveAsButton(); - - await editProcessFilter.editProcessFilterDialog().setFilterName('New'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); - await editProcessFilter.openFilter(); - await editProcessFilter.checkCustomiseFilterHeaderIsExpanded(); - - await browser.driver.sleep(1000); - - await expect(await processFilter.getActiveFilterName()).toBe('New'); - await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Process Name'); - await editProcessFilter.clickDeleteButton(); - - await browser.driver.sleep(1000); - - await processFilter.clickProcessFilter('custom-new'); - await editProcessFilter.openFilter(); - await editProcessFilter.checkCustomiseFilterHeaderIsExpanded(); - await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); - await editProcessFilter.clickDeleteButton(); - }); - - it('[C291807] A process filter is overrided when clicking on save button', async () => { + it('[C291807] A process filter is updated when clicking on save button', async () => { await editProcessFilter.setSortFilterDropDown('Id'); await processFilter.clickAllProcessesFilter(); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('New'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); - - await browser.driver.sleep(1000); + await editProcessFilter.saveAs('New'); await expect(await processFilter.getActiveFilterName()).toBe('New'); await editProcessFilter.openFilter(); @@ -186,12 +139,8 @@ describe('Edit process filters cloud', () => { it('[C291808] A process filter is deleted when clicking on delete button', async () => { await editProcessFilter.setSortFilterDropDown('Id'); await processFilter.clickAllProcessesFilter(); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('New'); + await editProcessFilter.saveAs('New'); - await browser.driver.sleep(1000); - - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); await editProcessFilter.openFilter(); await expect(await processFilter.getActiveFilterName()).toBe('New'); await expect(await editProcessFilter.getSortFilterDropDownValue()).toEqual('Id'); @@ -258,9 +207,6 @@ describe('Edit process filters cloud', () => { async function createNewProcessCustomFilter(name: string): Promise { await editProcessFilter.setSortFilterDropDown('Id'); await processFilter.clickAllProcessesFilter(); - - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName(name); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); + await editProcessFilter.saveAs(name); } }); diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index 7456982787..d71063be81 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -244,9 +244,7 @@ describe('Process list cloud', () => { await editProcessFilter.openFilter(); await editProcessFilter.setProcessInstanceId(completedProcess.entry.id); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('New'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); + await editProcessFilter.saveAs('New'); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('New'); @@ -274,9 +272,7 @@ describe('Process list cloud', () => { await expect(await editProcessFilter.checkAppNamesAreUnique()).toBe(true); await BrowserActions.closeMenuAndDialogs(); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('SavedFilter'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); + await editProcessFilter.saveAs('SavedFilter'); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('SavedFilter'); await editProcessFilter.openFilter(); @@ -288,9 +284,7 @@ describe('Process list cloud', () => { await waitTillContentLoaded(); await processList.checkContentIsDisplayedById(switchProcessInstance.entry.id); - await editProcessFilter.clickSaveAsButton(); - await editProcessFilter.editProcessFilterDialog().setFilterName('SwitchFilter'); - await editProcessFilter.editProcessFilterDialog().clickOnSaveButton(); + await editProcessFilter.saveAs('SwitchFilter'); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('SwitchFilter'); await editProcessFilter.openFilter(); diff --git a/e2e/process-services-cloud/process-filter-results.e2e.ts b/e2e/process-services-cloud/process-filter-results.e2e.ts index df66fa39e7..1f512a55fd 100644 --- a/e2e/process-services-cloud/process-filter-results.e2e.ts +++ b/e2e/process-services-cloud/process-filter-results.e2e.ts @@ -157,6 +157,7 @@ describe('Process filters cloud', () => { await appListCloudComponent.goToApp(candidateBaseApp); await tasksCloudDemoPage.taskListCloudComponent().checkTaskListIsLoaded(); await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters(); + await processCloudDemoPage.processFilterCloudComponent.clickRunningProcessesFilter(); }); it('[C306887] Should be able to filter by appName', async () => { @@ -189,10 +190,8 @@ describe('Process filters cloud', () => { it('[C311315] Should be able to filter by process definition id', async () => { await editProcessFilter.openFilter(); await editProcessFilter.setProperty('processDefinitionId', processDefinition.entry.id); - await editProcessFilter.setProcessName(runningProcessInstance.entry.name); await processList.checkContentIsDisplayedByName(runningProcessInstance.entry.name); - await editProcessFilter.setProcessName(anotherProcessInstance.entry.name); await editProcessFilter.setProperty('processDefinitionId', anotherProcessDefinition.entry.id); await processList.checkContentIsDisplayedByName(anotherProcessInstance.entry.name); await processList.checkContentIsNotDisplayedByName(runningProcessInstance.entry.name); @@ -286,18 +285,14 @@ describe('Process filters cloud', () => { }); it('[C306892] Should be able to filter by process status - All', async () => { + await processCloudDemoPage.processFilterCloudComponent.clickAllProcessesFilter(); + await editProcessFilter.openFilter(); await editProcessFilter.setStatusFilterDropDown(PROCESS_STATUS.ALL); - await editProcessFilter.setProcessName(runningProcessInstance.entry.name); + await processList.checkContentIsDisplayedByName(runningProcessInstance.entry.name); - - await editProcessFilter.setProcessName(anotherProcessInstance.entry.name); await processList.checkContentIsDisplayedByName(anotherProcessInstance.entry.name); - - await editProcessFilter.setProcessName(suspendProcessInstance.entry.name); await processList.checkContentIsDisplayedByName(suspendProcessInstance.entry.name); - - await editProcessFilter.setProcessName(completedProcess.entry.name); await processList.checkContentIsDisplayedByName(completedProcess.entry.name); }); diff --git a/e2e/process-services-cloud/process-list-cloud-action-menu.e2e.ts b/e2e/process-services-cloud/process-list-cloud-action-menu.e2e.ts deleted file mode 100644 index c59e62c370..0000000000 --- a/e2e/process-services-cloud/process-list-cloud-action-menu.e2e.ts +++ /dev/null @@ -1,127 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - ApiService, - AppListCloudPage, - GroupIdentityService, - IdentityService, - LoginPage, - ProcessDefinitionsService, - ProcessInstancesService, - StringUtil -} from '@alfresco/adf-testing'; -import { browser } from 'protractor'; -import { ProcessCloudDemoPage } from './pages/process-cloud-demo.page'; -import { TasksCloudDemoPage } from './pages/tasks-cloud-demo.page'; -import { NavigationBarPage } from '../core/pages/navigation-bar.page'; -import CONSTANTS = require('../util/constants'); - -describe('Process list cloud', () => { - - describe('Process List - Custom Action Menu', () => { - - const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name; - - const loginSSOPage = new LoginPage(); - const navigationBarPage = new NavigationBarPage(); - const appListCloudComponent = new AppListCloudPage(); - - const processCloudDemoPage = new ProcessCloudDemoPage(); - const editProcessFilter = processCloudDemoPage.editProcessFilterCloudComponent(); - const processList = processCloudDemoPage.processListCloudComponent(); - - const tasksCloudDemoPage = new TasksCloudDemoPage(); - - const apiService = new ApiService(); - const identityService = new IdentityService(apiService); - const groupIdentityService = new GroupIdentityService(apiService); - const processDefinitionService = new ProcessDefinitionsService(apiService); - const processInstancesService = new ProcessInstancesService(apiService); - - let testUser, groupInfo, editProcess, deleteProcess; - - beforeAll(async () => { - await apiService.loginWithProfile('identityAdmin'); - - testUser = await identityService.createIdentityUserWithRole([identityService.ROLES.ACTIVITI_USER]); - groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); - await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); - - await apiService.login(testUser.username, testUser.password); - const processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.simpleProcess, simpleApp); - - editProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp, { - 'name': StringUtil.generateRandomString(), - 'businessKey': StringUtil.generateRandomString() - }); - deleteProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp, { - 'name': StringUtil.generateRandomString(), - 'businessKey': StringUtil.generateRandomString() - }); - - await loginSSOPage.login(testUser.username, testUser.password); - - await navigationBarPage.navigateToProcessServicesCloudPage(); - await appListCloudComponent.checkApsContainer(); - await appListCloudComponent.goToApp(simpleApp); - await tasksCloudDemoPage.clickSettingsButton(); - await tasksCloudDemoPage.enableTestingMode(); - await tasksCloudDemoPage.enableActionMenu(); - await tasksCloudDemoPage.enableContextMenu(); - await tasksCloudDemoPage.addActionIsDisplayed(); - await tasksCloudDemoPage.addAction('edit'); - await tasksCloudDemoPage.actionAdded('edit'); - await tasksCloudDemoPage.addAction('delete'); - await tasksCloudDemoPage.actionAdded('delete'); - await tasksCloudDemoPage.addDisabledAction('disabledaction'); - await tasksCloudDemoPage.actionAdded('disabledaction'); - await tasksCloudDemoPage.addInvisibleAction('invisibleaction'); - await tasksCloudDemoPage.actionAdded('invisibleaction'); - await tasksCloudDemoPage.clickAppButton(); - await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters(); - await processCloudDemoPage.processFilterCloudComponent.clickRunningProcessesFilter(); - }); - - afterAll(async () => { - await apiService.loginWithProfile('identityAdmin'); - await identityService.deleteIdentityUser(testUser.idIdentityService); - }); - - it('[C315236] Should be able to see and execute custom action menu', async () => { - await editProcessFilter.openFilter(); - await editProcessFilter.setProcessName(editProcess.entry.name); - await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe(CONSTANTS.PROCESS_FILTERS.RUNNING); - await processList.checkProcessListIsLoaded(); - await processList.checkContentIsDisplayedById(editProcess.entry.id); - await processList.clickOptionsButton(editProcess.entry.id); - await expect(await processList.isCustomActionEnabled('disabledaction')).toBe(false); - await expect(await processList.getNumberOfOptions()).toBe(3); - await processList.clickOnCustomActionMenu('edit'); - await processCloudDemoPage.checkActionExecuted(editProcess.entry.id, 'edit'); - - await editProcessFilter.setProcessName(deleteProcess.entry.name); - await browser.sleep(1000); - await processList.rightClickOnRow(deleteProcess.entry.id); - await expect(await processList.isCustomActionEnabled('disabledaction')).toBe(false); - await expect(await processList.getNumberOfOptions()).toBe(3); - await processList.clickContextMenuActionNamed('delete'); - await processCloudDemoPage.checkActionExecuted(deleteProcess.entry.id, 'delete'); - }); - }); -}); diff --git a/e2e/process-services-cloud/task-list-cloud-action-menu.e2e.ts b/e2e/process-services-cloud/task-list-cloud-action-menu.e2e.ts deleted file mode 100644 index 349bfa4165..0000000000 --- a/e2e/process-services-cloud/task-list-cloud-action-menu.e2e.ts +++ /dev/null @@ -1,113 +0,0 @@ -/*! - * @license - * Copyright 2019 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { ApiService, AppListCloudPage, GroupIdentityService, IdentityService, LoginPage, ProcessDefinitionsService, ProcessInstancesService, QueryService, TasksService } from '@alfresco/adf-testing'; -import { browser } from 'protractor'; -import { TasksCloudDemoPage } from './pages/tasks-cloud-demo.page'; -import { NavigationBarPage } from '../core/pages/navigation-bar.page'; - -describe('Process list cloud', () => { - - describe('Process List - Custom Action Menu', () => { - - const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name; - - const loginSSOPage = new LoginPage(); - const navigationBarPage = new NavigationBarPage(); - const appListCloudComponent = new AppListCloudPage(); - - const tasksCloudDemoPage = new TasksCloudDemoPage(); - const editTaskFilter = tasksCloudDemoPage.editTaskFilterCloud; - const taskFilter = tasksCloudDemoPage.taskFilterCloudComponent; - const taskList = tasksCloudDemoPage.taskListCloudComponent(); - - const apiService = new ApiService(); - const identityService = new IdentityService(apiService); - const groupIdentityService = new GroupIdentityService(apiService); - const processDefinitionService = new ProcessDefinitionsService(apiService); - const processInstancesService = new ProcessInstancesService(apiService); - const queryService = new QueryService(apiService); - const tasksService = new TasksService(apiService); - - let testUser, groupInfo, editProcess, deleteProcess, editTask, deleteTask; - - beforeAll(async () => { - await apiService.loginWithProfile('identityAdmin'); - - testUser = await identityService.createIdentityUserWithRole( [identityService.ROLES.ACTIVITI_USER]); - groupInfo = await groupIdentityService.getGroupInfoByGroupName('hr'); - await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); - - await apiService.login(testUser.username, testUser.password); - const processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); - - editProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - deleteProcess = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - - editTask = await queryService.getProcessInstanceTasks(editProcess.entry.id, simpleApp); - deleteTask = await queryService.getProcessInstanceTasks(deleteProcess.entry.id, simpleApp); - await tasksService.claimTask(editTask.list.entries[0].entry.id, simpleApp); - await tasksService.claimTask(deleteTask.list.entries[0].entry.id, simpleApp); - - await loginSSOPage.login(testUser.username, testUser.password); - }); - - afterAll(async() => { - await apiService.loginWithProfile('identityAdmin'); - await identityService.deleteIdentityUser(testUser.idIdentityService); - }); - - beforeAll(async () => { - await navigationBarPage.navigateToProcessServicesCloudPage(); - await appListCloudComponent.checkApsContainer(); - await appListCloudComponent.goToApp(simpleApp); - await tasksCloudDemoPage.clickSettingsButton(); - await tasksCloudDemoPage.enableTestingMode(); - await tasksCloudDemoPage.enableActionMenu(); - await tasksCloudDemoPage.enableContextMenu(); - await tasksCloudDemoPage.addActionIsDisplayed(); - await tasksCloudDemoPage.addAction('edit'); - await tasksCloudDemoPage.actionAdded('edit'); - await tasksCloudDemoPage.addAction('delete'); - await tasksCloudDemoPage.actionAdded('delete'); - await tasksCloudDemoPage.addDisabledAction('disabledaction'); - await tasksCloudDemoPage.actionAdded('disabledaction'); - await tasksCloudDemoPage.addInvisibleAction('invisibleaction'); - await tasksCloudDemoPage.actionAdded('invisibleaction'); - await tasksCloudDemoPage.clickAppButton(); - await editTaskFilter.openFilter(); - await taskFilter.checkTaskFilterIsDisplayed('my-tasks'); - }); - - it('[C315723] Should be able to see and execute custom action menu', async () => { - await expect(await taskFilter.getActiveFilterName()).toBe('My Tasks'); - await taskList.checkTaskListIsLoaded(); - await taskList.checkContentIsDisplayedById(editTask.list.entries[0].entry.id); - await taskList.clickOptionsButton(editTask.list.entries[0].entry.id); - await expect(await taskList.isCustomActionEnabled('disabledaction')).toBe(false); - await expect(await taskList.getNumberOfOptions()).toBe(3); - await taskList.clickOnCustomActionMenu('edit'); - await tasksCloudDemoPage.checkActionExecuted(editTask.list.entries[0].entry.id, 'edit'); - await taskList.rightClickOnRow(deleteTask.list.entries[0].entry.id); - await expect(await taskList.isCustomActionEnabled('disabledaction')).toBe(false); - await expect(await taskList.getNumberOfOptions()).toBe(3); - await taskList.clickContextMenuActionNamed('delete'); - await tasksCloudDemoPage.checkActionExecuted(deleteTask.list.entries[0].entry.id, 'delete'); - }); - }); -}); diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index d3feaa48ed..3262d275e2 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -7,6 +7,8 @@ "C279932": "login problem APS not basic", "C279931": "login problem APS not basic", "C279930": "login problem APS not basic", + "C299187": "ADF-5285 Failing aspect test due multiple replica", "C311290": "ADF-5308", - "C260241": "ADF-5335- this will exclude 2 tests" + "C260241": "ADF-5335- this will exclude 2 tests", + "C587515": "https://alfresco.atlassian.net/browse/ADF-5340" } diff --git a/lib/process-services-cloud/src/lib/i18n/en.json b/lib/process-services-cloud/src/lib/i18n/en.json index 5b49ea7868..4177b55d6e 100644 --- a/lib/process-services-cloud/src/lib/i18n/en.json +++ b/lib/process-services-cloud/src/lib/i18n/en.json @@ -174,6 +174,7 @@ }, "ADF_CLOUD_EDIT_TASK_FILTER": { "TITLE": "Customize your filter", + "FILTER_NAME": "Filter name", "TOOL_TIP": { "SAVE": "Save filter", "SAVE_AS": "Save filter as", @@ -229,6 +230,7 @@ }, "ADF_CLOUD_EDIT_PROCESS_FILTER": { "TITLE": "Customize your filter", + "FILTER_NAME": "Filter name", "LABEL": { "APP_NAME": "ApplicationName", "PROCESS_INS_ID": "ProcessInstanceId", diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html index 9f53e3fd14..7ef0c0452b 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html @@ -5,7 +5,7 @@ {{processFilter.name | translate}} {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.TITLE' | translate}} -
+