From b18731381a1219e830e2efa26ee07a8b066901ff Mon Sep 17 00:00:00 2001 From: cristinaj Date: Fri, 1 Feb 2019 21:41:00 +0200 Subject: [PATCH] [ADF-3848]Implement edit task filters tests (#4110) * Add test for 'all the filters properly set up accordingly with the Query Param' acceptance criteria. * Implement edit task filters tests. * Fix lint errors * Fix existent tests * fix lint error * Changed 'status' to 'state' --- e2e/pages/adf/dataTablePage.ts | 4 + .../process-services/tasksCloudDemoPage.ts | 2 +- e2e/pages/adf/dialog/editTaskFilterDialog.ts | 82 ++++++ .../editTaskFilterCloudComponent.ts | 88 +++++- .../editTaskFilterCloudComponent.ts | 150 ++++++++++ .../edit-task-filters-component.e2e.ts | 263 ++++++++++++++++++ 6 files changed, 581 insertions(+), 8 deletions(-) create mode 100644 e2e/pages/adf/dialog/editTaskFilterDialog.ts create mode 100644 e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts create mode 100644 e2e/process-services-cloud/edit-task-filters-component.e2e.ts diff --git a/e2e/pages/adf/dataTablePage.ts b/e2e/pages/adf/dataTablePage.ts index ea702d3f1f..e53dc2f9dd 100644 --- a/e2e/pages/adf/dataTablePage.ts +++ b/e2e/pages/adf/dataTablePage.ts @@ -251,6 +251,10 @@ export class DataTablePage { return this; } + checkSpinnerIsNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.spinner); + } + checkRowIsDisplayedByName(filename) { Util.waitUntilElementIsVisible(element.all(by.css(`div[filename="${filename}"]`)).first()); } diff --git a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts index 14d800785c..66d8fd8e8d 100644 --- a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts @@ -56,7 +56,7 @@ export class TasksCloudDemoPage { } customTaskFilter(filterName) { - return new TaskFiltersCloudComponent(element(by.css(`span[data-automation-id="${filterName}_filter"]`))); + return new TaskFiltersCloudComponent(element(by.css(`span[data-automation-id="${filterName}-filter"]`))); } getActiveFilterName() { diff --git a/e2e/pages/adf/dialog/editTaskFilterDialog.ts b/e2e/pages/adf/dialog/editTaskFilterDialog.ts new file mode 100644 index 0000000000..27254645af --- /dev/null +++ b/e2e/pages/adf/dialog/editTaskFilterDialog.ts @@ -0,0 +1,82 @@ +/*! + * @license + * Copyright 2016 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 { by, element } from 'protractor'; +import { Util } from '../../../util/util'; + +export class EditTaskFilterDialog { + + componentElement = element(by.css('adf-cloud-task-filter-dialog')); + title = element(by.id('adf-task-filter-dialog-title')); + filterNameInput = element(by.id('adf-filter-name-id')); + saveButtonLocator = by.id('adf-save-button-id'); + cancelButtonLocator = by.id('adf-cancel-button-id'); + + clickOnSaveButton() { + let saveButton = this.componentElement.element(this.saveButtonLocator); + Util.waitUntilElementIsVisible(saveButton); + saveButton.click(); + Util.waitUntilElementIsNotVisible(this.componentElement); + return this; + } + + checkSaveButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); + return this.componentElement.element(this.saveButtonLocator).isEnabled(); + } + + clickOnCancelButton() { + let cancelButton = this.componentElement.element(this.cancelButtonLocator); + Util.waitUntilElementIsVisible(cancelButton); + cancelButton.click(); + Util.waitUntilElementIsNotVisible(this.componentElement); + return this; + } + + checkCancelButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); + return this.componentElement.element(this.cancelButtonLocator).isEnabled(); + } + + getFilterName() { + Util.waitUntilElementIsVisible(this.filterNameInput); + return this.filterNameInput.getAttribute('value'); + } + + setFilterName(filterName) { + this.clearFilterName(); + this.filterNameInput.sendKeys(filterName); + return this; + } + + clearFilterName() { + Util.waitUntilElementIsVisible(this.filterNameInput); + this.filterNameInput.click(); + this.filterNameInput.getAttribute('value').then((value) => { + for (let i = value.length; i >= 0; i--) { + this.filterNameInput.sendKeys(protractor.Key.BACK_SPACE); + } + }); + return this; + } + + getTitle() { + Util.waitUntilElementIsVisible(this.title); + return this.title.getText(); + } + +} diff --git a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts index 37d39c3130..b503b746b2 100644 --- a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts @@ -17,15 +17,22 @@ import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; +import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; export class EditTaskFilterCloudComponent { customiseFilter = element(by.id('adf-edit-task-filter-title-id')); selectedOption = element(by.css('mat-option[class*="mat-selected"]')); assignment = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-assignment"]')); - statusBy = by.css('mat-select[data-automation-id="adf-cloud-edit-task-property-state"]'); - sortBy = by.css('mat-select[data-automation-id="adf-cloud-edit-task-property-sort"]'); - orderBy = by.css('mat-select[data-automation-id="adf-cloud-edit-task-property-order"]'); + saveButton = element(by.css('button[id="adf-save-id"]')); + saveAsButton = element(by.css('button[id="adf-save-as-id"]')); + deleteButton = element(by.css('button[id="adf-delete-id"]')); + + editTaskFilter = new EditTaskFilterDialog(); + + editTaskFilterDialog() { + return this.editTaskFilter; + } clickCustomiseFilterHeader() { Util.waitUntilElementIsVisible(this.customiseFilter); @@ -34,7 +41,7 @@ export class EditTaskFilterCloudComponent { } setStateFilterDropDown(option) { - this.clickOnDropDownArrow(this.statusBy); + this.clickOnDropDownArrow('state'); let stateElement = element.all(by.cssContainingText('mat-option span', option)).first(); Util.waitUntilElementIsClickable(stateElement); @@ -43,8 +50,12 @@ export class EditTaskFilterCloudComponent { return this; } + getStateFilterDropDownValue() { + return element(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-state'] span")).getText(); + } + setSortFilterDropDown(option) { - this.clickOnDropDownArrow(this.sortBy); + this.clickOnDropDownArrow('sort'); let sortElement = element.all(by.cssContainingText('mat-option span', option)).first(); Util.waitUntilElementIsClickable(sortElement); @@ -53,8 +64,14 @@ export class EditTaskFilterCloudComponent { return this; } + getSortFilterDropDownValue() { + let elementSort = element(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-sort'] span")); + Util.waitUntilElementIsVisible(elementSort); + return elementSort.getText(); + } + setOrderFilterDropDown(option) { - this.clickOnDropDownArrow(this.orderBy); + this.clickOnDropDownArrow('order'); let orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); Util.waitUntilElementIsClickable(orderElement); @@ -63,8 +80,12 @@ export class EditTaskFilterCloudComponent { return this; } + getOrderFilterDropDownValue() { + return element(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-order'] span")).getText(); + } + clickOnDropDownArrow(option) { - let dropDownArrow = element(option); + let dropDownArrow = element(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")); Util.waitUntilElementIsVisible(dropDownArrow); dropDownArrow.click(); Util.waitUntilElementIsVisible(this.selectedOption); @@ -78,4 +99,57 @@ export class EditTaskFilterCloudComponent { return this; } + getAssignment() { + return this.assignment.getText(); + } + + checkSaveButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.saveButton); + return this; + } + + checkSaveAsButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.saveAsButton); + return this; + } + + checkDeleteButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.deleteButton); + return this; + } + + checkSaveButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.saveButton); + return this.saveButton.isEnabled(); + } + + checkSaveAsButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.saveButton); + return this.saveAsButton.isEnabled(); + } + + checkDeleteButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.saveButton); + return this.deleteButton.isEnabled(); + } + + clickSaveAsButton() { + Util.waitUntilElementIsClickable(this.saveAsButton); + Util.waitUntilElementIsVisible(this.saveAsButton); + this.saveAsButton.click(); + return this.editTaskFilter; + } + + clickDeleteButton() { + Util.waitUntilElementIsVisible(this.deleteButton); + this.deleteButton.click(); + return this; + } + + clickSaveButton() { + Util.waitUntilElementIsVisible(this.saveButton); + this.saveButton.click(); + return this; + } + } diff --git a/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts new file mode 100644 index 0000000000..a158b40f0e --- /dev/null +++ b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts @@ -0,0 +1,150 @@ +/*! + * @license + * Copyright 2016 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 { Util } from '../../../util/util'; +import { by, element, protractor } from 'protractor'; +import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; + +export class EditTaskFilterCloudComponent { + + customiseFilter = element(by.id('adf-edit-task-filter-title-id')); + selectedOption = element(by.css('mat-option[class*="mat-selected"]')); + assignment = element(by.css('mat-form-field[data-automation-id="assignment"] input')); + saveButton = element(by.css('button[data-automation-id="Save"]')); + saveAsButton = element(by.css('button[data-automation-id="Save as"]')); + deleteButton = element(by.css('button[data-automation-id="Delete"]')); + + editTaskFilter = new EditTaskFilterDialog(); + + editTaskFilterDialog() { + return this.editTaskFilter; + } + + clickCustomiseFilterHeader() { + Util.waitUntilElementIsVisible(this.customiseFilter); + this.customiseFilter.click(); + return this; + } + + setStateFilterDropDown(option) { + this.clickOnDropDownArrow('status'); + + let stateElement = element.all(by.cssContainingText('mat-option span', option)).first(); + Util.waitUntilElementIsClickable(stateElement); + Util.waitUntilElementIsVisible(stateElement); + stateElement.click(); + return this; + } + + getStateFilterDropDownValue() { + return element(by.css("mat-form-field[data-automation-id='status'] span")).getText(); + } + + setSortFilterDropDown(option) { + this.clickOnDropDownArrow('sort'); + + let sortElement = element.all(by.cssContainingText('mat-option span', option)).first(); + Util.waitUntilElementIsClickable(sortElement); + Util.waitUntilElementIsVisible(sortElement); + sortElement.click(); + return this; + } + + getSortFilterDropDownValue() { + return element(by.css("mat-form-field[data-automation-id='sort'] span")).getText(); + } + + setOrderFilterDropDown(option) { + this.clickOnDropDownArrow('order'); + + let orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); + Util.waitUntilElementIsClickable(orderElement); + Util.waitUntilElementIsVisible(orderElement); + orderElement.click(); + return this; + } + + getOrderFilterDropDownValue() { + return element(by.css("mat-form-field[data-automation-id='order'] span")).getText(); + } + + clickOnDropDownArrow(option) { + let dropDownArrow = element(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")); + Util.waitUntilElementIsVisible(dropDownArrow); + dropDownArrow.click(); + Util.waitUntilElementIsVisible(this.selectedOption); + } + + setAssignment(option) { + Util.waitUntilElementIsVisible(this.assignment); + this.assignment.clear(); + this.assignment.sendKeys(option); + this.assignment.sendKeys(protractor.Key.ENTER); + return this; + } + + getAssignment() { + return this.assignment.getText(); + } + + checkSaveButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.saveButton); + return this; + } + + checkSaveAsButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.saveAsButton); + return this; + } + + checkDeleteButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.deleteButton); + return this; + } + + checkSaveButtonIsEnabled() { + return this.saveButton.isEnabled(); + } + + checkSaveAsButtonIsEnabled() { + return this.saveAsButton.isEnabled(); + } + + checkDeleteButtonIsEnabled() { + return this.deleteButton.isEnabled(); + } + + clickSaveAsButton() { + Util.waitUntilElementIsClickable(this.saveAsButton); + Util.waitUntilElementIsVisible(this.saveAsButton); + this.saveAsButton.click(); + return this.editTaskFilter; + } + + clickDeleteButton() { + Util.waitUntilElementIsVisible(this.deleteButton); + this.deleteButton.click(); + return this; + } + + clickSaveButton() { + Util.waitUntilElementIsVisible(this.saveButton); + this.saveButton.click(); + return this; + } + +} diff --git a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts new file mode 100644 index 0000000000..1d01c7e221 --- /dev/null +++ b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts @@ -0,0 +1,263 @@ +/*! + * @license + * Copyright 2016 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 TestConfig = require('../test.config'); + +import { LoginSSOPage } from '../pages/adf/loginSSOPage'; +import { SettingsPage } from '../pages/adf/settingsPage'; +import { NavigationBarPage } from '../pages/adf/navigationBarPage'; +import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; +import { AppListCloudComponent } from '../pages/adf/process-cloud/appListCloudComponent'; +import { Util } from '../util/util'; + +import { Tasks } from '../actions/APS-cloud/tasks'; + +describe('Edit task filters cloud', () => { + + describe('Edit Task Filters', () => { + const settingsPage = new SettingsPage(); + const loginSSOPage = new LoginSSOPage(); + const navigationBarPage = new NavigationBarPage(); + let appListCloudComponent = new AppListCloudComponent(); + let tasksCloudDemoPage = new TasksCloudDemoPage(); + const tasksService: Tasks = new Tasks(); + + let silentLogin; + const simpleApp = 'simple-app'; + const completedTaskName = Util.generateRandomString(), assignedTaskName = Util.generateRandomString(); + let assignedTask, completedTask; + + beforeAll(async () => { + silentLogin = false; + settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, silentLogin); + loginSSOPage.clickOnSSOButton(); + loginSSOPage.loginAPS(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + await tasksService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); + await tasksService.claimTask(assignedTask.entry.id, simpleApp); + completedTask = await tasksService.createAndCompleteTask(completedTaskName, simpleApp); + }); + + beforeEach((done) => { + navigationBarPage.navigateToProcessServicesCloudPage(); + appListCloudComponent.checkApsContainer(); + appListCloudComponent.goToApp(simpleApp); + done(); + }); + + afterEach((done) => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('Created Date'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveButton(); + done(); + }); + + it('[C291785] All the filters property should be set up accordingly with the Query Param', () => { + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getStateFilterDropDownValue()).toEqual('ASSIGNED'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getOrderFilterDropDownValue()).toEqual('DESC'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTaskName); + + tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('Completed Tasks'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getStateFilterDropDownValue()).toEqual('COMPLETED'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getOrderFilterDropDownValue()).toEqual('DESC'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTaskName); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + }); + + it('[C291786] Delete Save and Save as actions should be displayed when clicking on custom filter header', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveButtonIsDisplayed().checkSaveAsButtonIsDisplayed() + .checkDeleteButtonIsDisplayed(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveButtonIsEnabled()).toEqual(false); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveAsButtonIsEnabled()).toEqual(false); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(true); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + }); + + it('[C291795] New filter is added when clicking Save As button', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('New').clickOnSaveButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveButtonIsEnabled()).toEqual(false); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveAsButtonIsEnabled()).toEqual(false); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(true); + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); + tasksCloudDemoPage.customTaskFilter('custom-new').clickTaskFilter(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickDeleteButton(); + }); + + it('[C291796] Two filters with same name can be created when clicking the Save As button', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('New').clickOnSaveButton(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().setSortFilterDropDown('PRIORITY'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('New').clickOnSaveButton(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('PRIORITY'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickDeleteButton(); + tasksCloudDemoPage.customTaskFilter('custom-new').clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickDeleteButton(); + }); + + it('[C291797] A filter is overrided when clicking on save button', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('New').clickOnSaveButton(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().setSortFilterDropDown('NAME'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('NAME'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickDeleteButton(); + }); + + it('[C291798] A filter is deleted when clicking on delete button', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.myTasksFilter().checkTaskFilterIsDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('New').clickOnSaveButton(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('New'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickDeleteButton(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + tasksCloudDemoPage.customTaskFilter('New').checkTaskFilterNotDisplayed(); + }); + + it('[C291800] Task filter should not be created when task filter dialog is closed', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('PRIORITY'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('PRIORITY'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getFilterName()).toEqual('My Tasks'); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().setFilterName('Cancel'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getFilterName()).toEqual('Cancel'); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().clickOnCancelButton(); + tasksCloudDemoPage.customTaskFilter('Cancel').checkTaskFilterNotDisplayed(); + expect(tasksCloudDemoPage.getActiveFilterName()).toEqual('My Tasks'); + tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); + }); + + it('[C291801] Save button of task filter dialog should be disabled when task name is empty', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getFilterName()).toEqual('My Tasks'); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().clearFilterName(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getFilterName()).toEqual(''); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().checkSaveButtonIsEnabled()).toEqual(false); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().checkCancelButtonIsEnabled()).toEqual(true); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().clickOnCancelButton(); + }); + + it('[C291799] Task filter dialog is displayed when clicking on Save As button', () => { + tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setSortFilterDropDown('ID'); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('ID'); + tasksCloudDemoPage.editTaskFilterCloudComponent().clickSaveAsButton(); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().checkSaveButtonIsEnabled()).toEqual(true); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().checkCancelButtonIsEnabled()).toEqual(true); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getTitle()).toEqual('Save filter as'); + expect(tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().getFilterName()).toEqual('My Tasks'); + tasksCloudDemoPage.editTaskFilterCloudComponent().editTaskFilterDialog().clickOnCancelButton(); + }); + + }); + +});