cristinaj 534954ffef [ADF-3753]Refactor task filters page (#3969)
* Refactoring taskFiltersPage

* Refactor task filters page

* Fix lint errors

* no message
2018-11-15 12:28:27 +00:00

431 lines
15 KiB
TypeScript

/*!
* @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 { AppSettingsToggles } from './dialog/appSettingsToggles';
import Util = require('../../../util/util');
import { element, by, protractor, browser } from 'protractor';
import { TabsPage } from '../material/tabsPage';
export class TaskDetailsPage {
appSettingsTogglesClass = new AppSettingsToggles();
formContent = element(by.css('adf-form'));
formNameField = element(by.css('span[data-automation-id*="formName"] span'));
assigneeField = element(by.css('span[data-automation-id*="assignee"] span'));
statusField = element(by.css('span[data-automation-id*="status"] span'));
categoryField = element(by.css('span[data-automation-id*="category"] span'));
parentNameField = element(by.css('span[data-automation-id*="parentName"] span'));
parentTaskIdField = element(by.css('span[data-automation-id*="parentTaskId"] span'));
durationField = element(by.css('span[data-automation-id*="duration"] span'));
endDateField = element(by.css('span[data-automation-id*="endDate"] span'));
createdField = element(by.css('span[data-automation-id="card-dateitem-created"] span'));
idField = element(by.css('span[data-automation-id*="id"] span'));
descriptionField = element(by.css('span[data-automation-id*="description"] span'));
dueDateField = element(by.css('span[data-automation-id*="dueDate"] span'));
activitiesTitle = element(by.css('div[class*="adf-info-drawer-layout-header-title"] div'));
commentField = element(by.id('comment-input'));
addCommentButton = element(by.css('[data-automation-id="comments-input-add"]'));
involvePeopleButton = element(by.css('div[class*="add-people"]'));
addPeopleField = element(by.css('input[data-automation-id="adf-people-search-input"]'));
addInvolvedUserButton = element(by.css('button[id="add-people"] span'));
emailInvolvedUser = by.xpath('following-sibling::div[@class="people-email ng-star-inserted"]');
editActionInvolvedUser = by.xpath('following-sibling::div[@class="people-edit-label ng-star-inserted"]');
involvedUserPic = by.xpath('ancestor::div/ancestor::div/preceding-sibling::div//div[@class="adf-people-search-people-pic ng-star-inserted"]');
taskDetailsInfoDrawer = element(by.tagName('adf-info-drawer'));
taskDetailsSection = element(by.css('div[data-automation-id="adf-tasks-details"]'));
taskDetailsEmptySection = element(by.css('div[data-automation-id="adf-tasks-details--empty"]'));
completeTask = element(by.css('button[id="adf-no-form-complete-button"]'));
completeFormTask = element(by.css('button[id="adf-form-complete"]'));
taskDetailsTitle = element(by.css('h2[class="activiti-task-details__header"] span'));
auditLogButton = element(by.css('button[adf-task-audit]'));
noPeopleInvolved = element(by.id('no-people-label'));
cancelInvolvePeopleButton = element(by.id('close-people-search'));
involvePeopleHeader = element(by.css('div[class="search-text-header"]'));
removeInvolvedPeople = element(by.css('button[data-automation-id="Remove"]'));
peopleTitle = element(by.id('people-title'));
editFormButton = element.all(by.css('mat-icon[data-automation-id="card-textitem-edit-icon-create"]')).last();
attachFormDropdown = element(by.css('div[class="adf-attach-form-row"]'));
cancelAttachForm = element(by.id('adf-no-form-cancel-button'));
attachFormButton = element(by.id('adf-no-form-attach-form-button'));
disabledAttachFormButton = element(by.css('button[id="adf-no-form-attach-form-button"][disabled]'));
removeAttachForm = element(by.id('adf-no-form-remove-button'));
attachFormName = element(by.css('span[class="adf-form-title ng-star-inserted"]'));
emptyTaskDetails = element(by.css('adf-task-details > div > div'));
getTaskDetailsTitle() {
Util.waitUntilElementIsVisible(this.taskDetailsTitle);
return this.taskDetailsTitle.getText();
}
checkSelectedForm(formName) {
Util.waitUntilElementIsVisible(this.attachFormName);
expect(formName).toEqual(this.attachFormName.getText());
}
checkAttachFormButtonIsDisabled() {
Util.waitUntilElementIsVisible(this.disabledAttachFormButton);
}
checkAttachFormButtonIsEnabled() {
Util.waitUntilElementIsClickable(this.attachFormButton);
}
checkEditFormButtonIsDisplayed() {
Util.waitUntilElementIsVisible(this.editFormButton);
}
clickEditFormButton() {
Util.waitUntilElementIsClickable(this.editFormButton);
return this.editFormButton.click();
}
checkAttachFormDropdownIsDisplayed() {
Util.waitUntilElementIsVisible(this.attachFormDropdown);
}
clickAttachFormDropdown() {
Util.waitUntilElementIsClickable(this.attachFormDropdown);
return this.attachFormDropdown.click();
}
selectAttachFormOption(option) {
let selectedOption = element(by.cssContainingText('mat-option[role="option"]', option));
Util.waitUntilElementIsClickable(selectedOption);
return selectedOption.click();
}
checkCancelAttachFormIsDisplayed() {
Util.waitUntilElementIsVisible(this.cancelAttachForm);
}
noFormIsDisplayed() {
Util.waitUntilElementIsNotOnPage(this.formContent);
return this;
}
clickCancelAttachForm() {
Util.waitUntilElementIsClickable(this.cancelAttachForm);
return this.cancelAttachForm.click();
}
checkRemoveAttachFormIsDisplayed() {
Util.waitUntilElementIsVisible(this.removeAttachForm);
}
clickRemoveAttachForm() {
Util.waitUntilElementIsClickable(this.removeAttachForm);
return this.removeAttachForm.click();
}
checkAttachFormButtonIsDisplayed() {
Util.waitUntilElementIsVisible(this.attachFormButton);
}
checkAttachFormButtonIsNotDisplayed() {
Util.waitUntilElementIsNotOnPage(this.attachFormButton);
}
clickAttachFormButton() {
Util.waitUntilElementIsClickable(this.attachFormButton);
return this.attachFormButton.click();
}
checkFormIsAttached(formName) {
Util.waitUntilElementIsVisible(this.formNameField);
this.formNameField.getText().then((attachedFormName) => {
expect(attachedFormName).toEqual(formName);
});
}
getFormName() {
Util.waitUntilElementIsVisible(this.formNameField);
return this.formNameField.getText();
}
getAssignee() {
Util.waitUntilElementIsVisible(this.assigneeField);
return this.assigneeField.getText();
}
getStatus() {
Util.waitUntilElementIsVisible(this.statusField);
return this.statusField.getText();
}
getCategory() {
Util.waitUntilElementIsVisible(this.categoryField);
return this.categoryField.getText();
}
getParentName() {
Util.waitUntilElementIsVisible(this.parentNameField);
return this.parentNameField.getText();
}
getParentTaskId() {
Util.waitUntilElementIsVisible(this.parentTaskIdField);
return this.parentTaskIdField.getText();
}
getDuration() {
Util.waitUntilElementIsVisible(this.durationField);
return this.durationField.getText();
}
getEndDate() {
Util.waitUntilElementIsVisible(this.endDateField);
return this.endDateField.getText();
}
getCreated() {
Util.waitUntilElementIsVisible(this.createdField);
return this.createdField.getText();
}
getId() {
Util.waitUntilElementIsVisible(this.idField);
return this.idField.getText();
}
getDescription() {
Util.waitUntilElementIsVisible(this.descriptionField);
return this.descriptionField.getText();
}
getDueDate() {
Util.waitUntilElementIsVisible(this.dueDateField);
return this.dueDateField.getText();
}
getTitle() {
Util.waitUntilElementIsVisible(this.activitiesTitle);
return this.activitiesTitle.getText();
}
selectActivityTab() {
let tabsPage = new TabsPage;
tabsPage.clickTabByTitle('Activity');
return this;
}
selectDetailsTab() {
let tabsPage = new TabsPage;
tabsPage.clickTabByTitle('Details');
return this;
}
addComment(comment) {
Util.waitUntilElementIsVisible(this.commentField);
this.commentField.sendKeys(comment);
this.addCommentButton.click();
return this;
}
clearComment(comment) {
Util.waitUntilElementIsVisible(this.commentField);
this.commentField.sendKeys(protractor.Key.ENTER);
return this;
}
checkCommentIsDisplayed(comment) {
let row = element(by.cssContainingText('div[id="comment-message"]', comment));
Util.waitUntilElementIsVisible(row);
return this;
}
clickInvolvePeopleButton() {
Util.waitUntilElementIsVisible(this.involvePeopleButton);
Util.waitUntilElementIsClickable(this.involvePeopleButton);
browser.actions().mouseMove(this.involvePeopleButton).perform();
this.involvePeopleButton.click();
return this;
}
typeUser(user) {
Util.waitUntilElementIsVisible(this.addPeopleField);
this.addPeopleField.sendKeys(user);
return this;
}
selectUserToInvolve(user) {
this.getRowsUser(user).click();
return this;
}
checkUserIsSelected(user) {
let row = element(by.cssContainingText('div[class*="search-list-container"] div[class*="people-full-name"]', user));
Util.waitUntilElementIsVisible(row);
return this;
}
clickAddInvolvedUserButton() {
Util.waitUntilElementIsVisible(this.addInvolvedUserButton);
Util.waitUntilElementIsClickable(this.addInvolvedUserButton);
this.addInvolvedUserButton.click();
return this;
}
getRowsUser(user) {
let row = element(by.cssContainingText('div[class*="people-full-name"]', user));
Util.waitUntilElementIsVisible(row);
return row;
}
removeInvolvedUser(user) {
let row = this.getRowsUser(user).element(by.xpath('ancestor::div[contains(@class, "adf-datatable-row")]'));
Util.waitUntilElementIsVisible(row);
row.element(by.css('button[data-automation-id="action_menu_0"]')).click();
Util.waitUntilElementIsVisible(this.removeInvolvedPeople);
return this.removeInvolvedPeople.click();
}
getInvolvedUserEmail(user) {
let email = this.getRowsUser(user).element(this.emailInvolvedUser);
Util.waitUntilElementIsVisible(email);
return email.getText();
}
getInvolvedUserEditAction(user) {
let edit = this.getRowsUser(user).element(this.editActionInvolvedUser);
Util.waitUntilElementIsVisible(edit);
return edit.getText();
}
clickAuditLogButton() {
Util.waitUntilElementIsVisible(this.auditLogButton);
this.auditLogButton.click();
}
appSettingsToggles() {
return this.appSettingsTogglesClass;
}
taskInfoDrawerIsDisplayed() {
Util.waitUntilElementIsVisible(this.taskDetailsInfoDrawer);
}
taskInfoDrawerIsNotDisplayed() {
Util.waitUntilElementIsNotOnPage(this.taskDetailsInfoDrawer);
}
checkNoPeopleIsInvolved() {
Util.waitUntilElementIsVisible(this.noPeopleInvolved);
return this;
}
clickCancelInvolvePeopleButton() {
Util.waitUntilElementIsVisible(this.cancelInvolvePeopleButton);
this.cancelInvolvePeopleButton.click();
return this;
}
getInvolvePeopleHeader() {
Util.waitUntilElementIsVisible(this.involvePeopleHeader);
return this.involvePeopleHeader.getText();
}
getInvolvePeoplePlaceholder() {
Util.waitUntilElementIsVisible(this.addPeopleField);
return this.addPeopleField.getAttribute('placeholder');
}
checkCancelButtonIsEnabled() {
Util.waitUntilElementIsVisible(this.cancelInvolvePeopleButton);
Util.waitUntilElementIsClickable(this.cancelInvolvePeopleButton);
return this;
}
checkAddPeopleButtonIsEnabled() {
Util.waitUntilElementIsVisible(this.addInvolvedUserButton);
Util.waitUntilElementIsClickable(this.addInvolvedUserButton);
return this;
}
noUserIsDisplayedInSearchInvolvePeople(user) {
Util.waitUntilElementIsNotOnPage(element(by.cssContainingText('div[class*="people-full-name"]', user)));
return this;
}
getInvolvedPeopleTitle() {
Util.waitUntilElementIsVisible(this.peopleTitle);
return this.peopleTitle.getText();
}
getInvolvedPeopleInitialImage(user) {
let pic = this.getRowsUser(user).element(this.involvedUserPic);
Util.waitUntilElementIsVisible(pic);
return pic.getText();
}
checkTaskDetails() {
Util.waitUntilElementIsVisible(this.taskDetailsSection);
return this.taskDetailsSection.getText();
}
checkTaskDetailsEmpty() {
Util.waitUntilElementIsVisible(this.taskDetailsEmptySection);
return this.taskDetailsEmptySection.getText();
}
checkTaskDetailsDisplayed() {
Util.waitUntilElementIsVisible(this.taskDetailsSection);
Util.waitUntilElementIsVisible(this.formNameField);
Util.waitUntilElementIsVisible(this.assigneeField);
Util.waitUntilElementIsVisible(this.statusField);
Util.waitUntilElementIsVisible(this.categoryField);
Util.waitUntilElementIsVisible(this.parentNameField);
Util.waitUntilElementIsVisible(this.createdField);
Util.waitUntilElementIsVisible(this.idField);
Util.waitUntilElementIsVisible(this.descriptionField);
Util.waitUntilElementIsVisible(this.dueDateField);
Util.waitUntilElementIsVisible(this.activitiesTitle);
return this.taskDetailsSection.getText();
}
clickCompleteTask() {
Util.waitUntilElementIsVisible(this.completeTask);
return this.completeTask.click();
}
checkCompleteFormButtonIsDisplayed() {
Util.waitUntilElementIsVisible(this.completeFormTask);
return this.completeFormTask;
}
checkCompleteTaskButtonIsEnabled() {
Util.waitUntilElementIsClickable(this.completeTask);
return this;
}
checkCompleteTaskButtonIsDisplayed() {
Util.waitUntilElementIsVisible(this.completeTask);
return this;
}
clickCompleteFormTask() {
Util.waitUntilElementIsClickable(this.completeFormTask);
return this.completeFormTask.click();
}
getEmptyTaskDetailsMessage() {
Util.waitUntilElementIsVisible(this.emptyTaskDetails);
return this.emptyTaskDetails.getText();
}
}