diff --git a/lib/testing/src/lib/process-services/actions/public-api.ts b/lib/testing/src/lib/process-services/actions/public-api.ts index 8950277b82..27fd5665de 100644 --- a/lib/testing/src/lib/process-services/actions/public-api.ts +++ b/lib/testing/src/lib/process-services/actions/public-api.ts @@ -20,3 +20,4 @@ export * from './integration.service'; export * from './models.service'; export * from './process.util'; export * from './task.util'; +export * from './user-filters.util'; diff --git a/lib/testing/src/lib/process-services/actions/user-filters.util.ts b/lib/testing/src/lib/process-services/actions/user-filters.util.ts new file mode 100644 index 0000000000..9b24475f49 --- /dev/null +++ b/lib/testing/src/lib/process-services/actions/user-filters.util.ts @@ -0,0 +1,83 @@ +/*! + * @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 { Logger } from '../../core/utils/logger'; +import { ApiService } from '../../core/actions/api.service'; +import { UserFilterOrderRepresentation, UserTaskFilterRepresentation } from '@alfresco/js-api'; + +export class UserFiltersUtil { + + apiService: ApiService; + + constructor(apiService: ApiService) { + this.apiService = apiService; + } + + async createATaskFilter(newTaskFilterName: string, sortType?: string, stateType?: string, assignmentType?: string, iconName?: string, appId?: number): Promise { + try { + return this.apiService.getInstance().activiti.userFiltersApi.createUserTaskFilter(new UserTaskFilterRepresentation( + {appId: appId, name: newTaskFilterName, icon: iconName, filter: {sort: sortType, state: stateType, assignment: assignmentType}})); + } catch (error) { + Logger.error('Create Task Filter - Service error, Response: ', error); + } + } + + async orderUserTaskFilters(filtersIdOrder: number[], appId?: number): Promise { + try { + return this.apiService.getInstance().activiti.userFiltersApi.orderUserTaskFilters(new UserFilterOrderRepresentation({appId: appId, order: filtersIdOrder})); + } catch (error) { + Logger.error('Re-order the list of user task filters - Service error, Response: ', error); + } + } + + async getUserTaskFilters(appId?: number): Promise { + try { + return this.apiService.getInstance().activiti.userFiltersApi.getUserTaskFilters({appId: appId}); + } catch (error) { + Logger.error('List task filters - Service error, Response: ', error); + } + } + + async getUserTaskFilterByName(taskFilterName: string, appId?: number): Promise { + try { + const taskFiltersList = this.apiService.getInstance().activiti.userFiltersApi.getUserTaskFilters({appId: appId}); + const chosenTaskFilter = (await taskFiltersList).data.find( (taskFilter) => { + return taskFilter.name === taskFilterName; + }); + return chosenTaskFilter; + } catch (error) { + Logger.error('Get user task filters by name - Service error, Response: ', error); + } + } + + async deleteUserTaskFilter(filterId: number): Promise { + try { + return this.apiService.getInstance().activiti.userFiltersApi.deleteUserTaskFilter(filterId); + } catch (error) { + Logger.error('Delete a task filter - Service error, Response: ', error); + } + } + + async updateUserTaskFilter(filterId: number, updatedTaskFilterName?: string, updatedSortType?: string, updatedStateType?: string, updatedAssignmentType?: string, updatedIconName?: string, appId?: number): Promise { + try { + return this.apiService.getInstance().activiti.userFiltersApi.updateUserTaskFilter(filterId, new UserTaskFilterRepresentation( + {appId: appId, name: updatedTaskFilterName, icon: updatedIconName, filter: {sort: updatedSortType, state: updatedStateType, assignment: updatedAssignmentType}})); + } catch (error) { + Logger.error('Update a task filter - Service error, Response: ', error); + } + } +} diff --git a/lib/testing/src/lib/process-services/pages/filters.page.ts b/lib/testing/src/lib/process-services/pages/filters.page.ts index f0e4457a6f..f4e7b554b4 100644 --- a/lib/testing/src/lib/process-services/pages/filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/filters.page.ts @@ -34,9 +34,19 @@ export class FiltersPage { } async isFilterHighlighted(filterName: string): Promise { - const processNameHighlighted = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); + const filterNameHighlighted = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); try { - await BrowserVisibility.waitUntilElementIsVisible(processNameHighlighted); + await BrowserVisibility.waitUntilElementIsVisible(filterNameHighlighted); + return true; + } catch (error) { + return false; + } + } + + async isFilterNotHighlighted(filterName: string): Promise { + const filterNameHighlighted = element(by.css(`.adf-active [data-automation-id='${filterName}_filter']`)); + try { + await BrowserVisibility.waitUntilElementIsNotVisible(filterNameHighlighted); return true; } catch (error) { return false; diff --git a/lib/testing/src/lib/process-services/pages/process-filters.page.ts b/lib/testing/src/lib/process-services/pages/process-filters.page.ts index 465bbf19e4..1e51a967fb 100644 --- a/lib/testing/src/lib/process-services/pages/process-filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/process-filters.page.ts @@ -48,14 +48,26 @@ export class ProcessFiltersPage { return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.running); } + async isRunningFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.running); + } + async isCompletedFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.completed); } + async isCompletedFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.completed); + } + async isAllFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.all); } + async isAllFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.all); + } + async isRunningFilterDisplayed(): Promise { return this.filtersPage.isFilterDisplayed(this.defaultProcessFilters.running); } diff --git a/lib/testing/src/lib/process-services/pages/process-list.page.ts b/lib/testing/src/lib/process-services/pages/process-list.page.ts index fafc82efdf..ffce3e6f8b 100644 --- a/lib/testing/src/lib/process-services/pages/process-list.page.ts +++ b/lib/testing/src/lib/process-services/pages/process-list.page.ts @@ -18,13 +18,26 @@ import { BrowserVisibility } from '../../core/utils/browser-visibility'; import { DataTableComponentPage } from '../../core/pages/data-table-component.page'; import { BrowserActions } from '../../core/utils/browser-actions'; -import { element, by } from 'protractor'; +import { element, by, ElementFinder } from 'protractor'; export class ProcessListPage { + rootElement: ElementFinder; + dataTable: DataTableComponentPage; + processListEmptyTitle: ElementFinder; - processListEmptyTitle = element(by.css('.adf-empty-content__title')); - processInstanceList = element(by.css('adf-process-instance-list')); - dataTable = new DataTableComponentPage(this.processInstanceList); + constructor( + rootElement = element.all(by.css('adf-process-instance-list')).first() + ) { + this.rootElement = rootElement; + this.dataTable = new DataTableComponentPage(this.rootElement); + this.processListEmptyTitle = this.rootElement.element( + by.css('.adf-empty-content__title') + ); + } + + getDataTable() { + return this.dataTable; + } getDisplayedProcessListEmptyTitle(): Promise { return BrowserActions.getText(this.processListEmptyTitle); @@ -36,7 +49,7 @@ export class ProcessListPage { async isProcessListDisplayed(): Promise { try { - await BrowserVisibility.waitUntilElementIsVisible(this.processInstanceList); + await BrowserVisibility.waitUntilElementIsVisible(this.rootElement); return true; } catch (error) { return false; diff --git a/lib/testing/src/lib/process-services/pages/task-filters.page.ts b/lib/testing/src/lib/process-services/pages/task-filters.page.ts index 515a226cb6..6f7b9db222 100644 --- a/lib/testing/src/lib/process-services/pages/task-filters.page.ts +++ b/lib/testing/src/lib/process-services/pages/task-filters.page.ts @@ -50,22 +50,50 @@ export class TaskFiltersPage { await this.filtersPage.clickFilterButton(this.involvedTask); } + async clickCustomFilterButton(customFilterName): Promise { + await this.filtersPage.clickFilterButton(element(by.css(`[data-automation-id="${customFilterName}_filter"]`))); + } + async isMyTasksFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultTaskFilters.myTasks); } + async isMyTasksFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultTaskFilters.myTasks); + } + async isQueuedFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultTaskFilters.queuedTasks); } + async isQueuedFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultTaskFilters.queuedTasks); + } + async isCompletedFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultTaskFilters.completedTasks); } + async isCompletedFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultTaskFilters.completedTasks); + } + async isInvolvedFilterHighlighted(): Promise { return this.filtersPage.isFilterHighlighted(this.defaultTaskFilters.involvedTasks); } + async isInvolvedFilterNotHighlighted(): Promise { + return this.filtersPage.isFilterNotHighlighted(this.defaultTaskFilters.involvedTasks); + } + + async isCustomFilterHighlighted(customFilterName): Promise { + return this.filtersPage.isFilterHighlighted(`${customFilterName}`); + } + + async isCustomFilterNotHighlighted(customFilterName): Promise { + return this.filtersPage.isFilterNotHighlighted(`${customFilterName}`); + } + async isMyTasksFilterDisplayed(): Promise { return this.filtersPage.isFilterDisplayed(this.defaultTaskFilters.myTasks); } @@ -81,4 +109,8 @@ export class TaskFiltersPage { async isInvolvedFilterDisplayed(): Promise { return this.filtersPage.isFilterDisplayed(this.defaultTaskFilters.involvedTasks); } + + async isCustomFilterDisplayed(customFilterName): Promise { + return this.filtersPage.isFilterDisplayed(customFilterName); + } }