| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| * |
| */ |
| //CustomFields.js |
| |
| //Actions specific to custom fields |
| |
| var EC = protractor.ExpectedConditions; |
| |
| //create custom fields |
| var nameInput = $("fims-text-input[controlname='name'] input"); |
| var descriptionInput = $("textarea[formcontrolname='description']"); |
| var identifierInput = $$("fims-id-input[controlname='identifier'] input"); |
| var labelInput = $$("fims-custom-field-form fims-text-input[controlname='label'] input"); |
| var hintInput = $$("fims-text-input[controlname='hint'] input"); |
| var checkboxMandatory = $$("mat-checkbox[formcontrolname='mandatory']"); |
| var descriptionInputField = $$("textarea[formcontrolname='description']"); |
| var radioButtonGroupDataType = $$("mat-radio-group[formcontrolname='dataType']"); |
| |
| var lengthInput = $$("fims-text-input[controlname='length'] input"); |
| var maxDigitsInput = $$("fims-text-input[controlname='precision'] input"); |
| var minValueInput = $$("fims-text-input[controlname='minValue'] input"); |
| var maxValueInput = $$("fims-text-input[controlname='maxValue'] input"); |
| |
| //general elements |
| var linkCustomFields = $("a[href='/customers/catalog/detail']"); |
| var primaryButtons = $$(".mat-raised-button.mat-primary"); |
| var buttons = $$("button"); |
| |
| module.exports = { |
| clickLinkCreateCustomFieldsForCustomers: function() { |
| browser.wait(EC.visibilityOf(linkCustomFields), 5000); |
| linkCustomFields.click(); |
| }, |
| verifyNoCustomFieldsFoundYet: function() { |
| browser.wait(EC.visibilityOf($("td-message .td-message-label")), 5000); |
| expect($("td-message .td-message-label").getText()).toEqual("No custom fields found"); |
| }, |
| clickButtonCreateCustomFields: function(){ |
| $("td-message .mat-button").click(); |
| }, |
| enterTextIntoNameInputField: function (text) { |
| browser.wait(EC.visibilityOf(nameInput), 3000); |
| nameInput.click().sendKeys(text); |
| }, |
| enterTextIntoDescriptionInputField: function (text) { |
| browser.wait(EC.visibilityOf(descriptionInput), 3000); |
| descriptionInput.click().sendKeys(text); |
| }, |
| clickButtonAddField: function(){ |
| buttons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "Add field"; |
| }); |
| }).click(); |
| }, |
| enterTextIntoIdentifierInputFieldForField: function(text, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(identifierInput.get(fieldNumber-1)), 5000); |
| identifierInput.get(fieldNumber-1).click().clear().sendKeys(text); |
| }, |
| enterTextIntoLabelInputField: function(text, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(labelInput.get(fieldNumber-1)), 5000); |
| labelInput.get(fieldNumber-1).click().clear().sendKeys(text); |
| }, |
| enterTextIntoHintInputFieldForField: function(text, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(hintInput.get(fieldNumber-1)), 5000); |
| hintInput.get(fieldNumber-1).click().clear().sendKeys(text); |
| }, |
| enterTextIntoDescriptionInputFieldForField: function(text, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(descriptionInputField.get(fieldNumber)), 5000); |
| descriptionInputField.get(fieldNumber).click().clear().sendKeys(text); |
| }, |
| verifyRadioTextIsSelectedForField: function(fieldNumber) { |
| expect(radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(0).getAttribute("class")).toMatch("mat-radio-checked"); |
| }, |
| verifyRadioTextIsDisabledForField: function(fieldNumber) { |
| expect(radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(0).getAttribute("class")).toMatch("mat-radio-disabled"); |
| }, |
| selectRadioButtonNumberForField: function(fieldNumber){ |
| radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(1).click(); |
| }, |
| selectRadioButtonDateForField: function(fieldNumber){ |
| radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(2).click(); |
| }, |
| selectRadioButtonSingleSelectionForField: function(fieldNumber){ |
| radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(3).click(); |
| }, |
| selectRadioButtonMultiSelectionForField: function(fieldNumber){ |
| radioButtonGroupDataType.get(fieldNumber-1).$$("mat-radio-button").get(4).click(); |
| }, |
| enterTextIntoLengthInputFieldForField: function(text, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(lengthInput.get(fieldNumber-1)), 5000); |
| lengthInput.get(fieldNumber-1).click().clear().sendKeys(text); |
| }, |
| enterNumberIntoMaxDigitsInputFieldForField: function(number, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(maxDigitsInput.get(fieldNumber-1)), 5000); |
| maxDigitsInput.get(fieldNumber-1).click().clear().sendKeys(number); |
| }, |
| enterNumberIntoMinValueInputFieldForField: function(number, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(minValueInput.get(fieldNumber-1)), 5000); |
| minValueInput.get(fieldNumber-1).click().clear().sendKeys(number); |
| }, |
| enterNumberIntoMaxValueInputFieldForField: function(number, fieldNumber) { |
| browser.wait(EC.elementToBeClickable(maxValueInput.get(fieldNumber-1)), 5000); |
| maxValueInput.get(fieldNumber-1).click().clear().sendKeys(number); |
| }, |
| clickButtonAddOption: function(optionNumber){ |
| buttons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "Add option"; |
| }); |
| }).get(optionNumber-1).click(); |
| }, |
| enterTextIntoLabelInputFieldForOption: function(text, option){ |
| $$("div[formarrayname='options'] fims-text-input[controlname='label'] input").get(option-1).click().clear().sendKeys(text); |
| }, |
| enterTextIntoValueInputFieldForOption: function(text, option){ |
| $$("div[formarrayname='options'] fims-text-input[controlname='value'] input").get(option-1).click().clear().sendKeys(text); |
| }, |
| clickButtonRemoveField: function(fieldNumber){ |
| removePaymentButtons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "Remove field"; |
| }); |
| }).get(fieldNumber-1).click(); |
| }, |
| |
| clickCreateCustomFieldsButton: function () { |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButtons.first().getWebElement()); |
| browser.wait(EC.elementToBeClickable(primaryButtons.first()), 5000); |
| primaryButtons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE CUSTOM FIELDS"; |
| }); |
| }).click(); |
| }, |
| verifyButtonCreateCustomFieldsDisabled: function(){ |
| expect(primaryButtons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE CUSTOM FIELDS"; |
| }); |
| }).first().isEnabled()).toBe(false); |
| }, |
| verifyButtonCreateCustomFieldsEnabled: function(){ |
| expect(primaryButtons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE CUSTOM FIELDS"; |
| }); |
| }).first().isEnabled()).toBe(true); |
| }, |
| clickUpdateCustomFieldsButton: function () { |
| browser.sleep(500); |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButtons.first().getWebElement()); |
| browser.wait(EC.elementToBeClickable(primaryButtons.first()), 5000); |
| primaryButtons.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "UPDATE CUSTOM FIELD"; |
| }); |
| }).click(); |
| }, |
| clickButtonEditCustomFieldForField: function(identifier) { |
| link = "/customers/catalog/detail/field/detail/" + identifier + "/edit"; |
| a = $('a[href= "' + link +'"]'); |
| browser.wait(EC.visibilityOf(a), 5000); |
| a.click(); |
| }, |
| clickDeleteFieldButton: function(){ |
| $("button[title='Delete this field']").click(); |
| }, |
| clickDeleteCatalogButton: function(){ |
| $("button[title='Delete this catalog']").click(); |
| }, |
| checkCheckboxMandatoryForField: function(fieldNumber){ |
| checkboxMandatory.get(fieldNumber-1).click(); |
| }, |
| verifyNameForCatalogIs: function(name) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Name"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === name; |
| })).toBe(true); |
| }, |
| verifyDescriptionForCatalogIs: function(desc) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Description"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === desc; |
| })).toBe(true); |
| }, |
| verifyCreatedByForCatalogIs: function(createdBy){ |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Created by"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text.indexOf(createdBy) >= 0; |
| })).toBe(true); |
| }, |
| verifyLastModifiedByForCatalogIs: function(lastModifiedBy){ |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Last modified by"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text.indexOf(lastModifiedBy) >= 0; |
| })).toBe(true); |
| }, |
| verifyDataTypeForRow: function(dataType, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(1).getText()).toEqual(dataType); |
| }, |
| verifyLabelForRow: function(label, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(2).getText()).toEqual(label); |
| }, |
| verifyHintForRow: function(hint, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(3).getText()).toEqual(hint); |
| }, |
| verifyDescriptionForRow: function(description, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(1).getText()).toEqual(description); |
| }, |
| verifyDataTypeForFieldIs: function(dataType) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Data type"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === dataType; |
| })).toBe(true); |
| }, |
| verifyLabelForFieldIs: function(label) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Label"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === label; |
| })).toBe(true); |
| }, |
| verifyHintForFieldIs: function(hint) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Hint"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === hint; |
| })).toBe(true); |
| }, |
| verifyMandatoryForFieldIs: function(mandatory) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Mandatory"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === mandatory; |
| })).toBe(true); |
| }, |
| verifyLengthForFieldIs: function(length) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Length"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === length; |
| })).toBe(true); |
| }, |
| verifyCreatedByForFieldIs: function(createdBy){ |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Created by"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text.indexOf(createdBy) >= 0; |
| })).toBe(true); |
| }, |
| verifyCustomFieldsTitle: function(title){ |
| browser.wait(EC.visibilityOf($("fims-custom-fields-component form h4")), 2000); |
| expect($("fims-custom-fields-component form h4").getText()).toEqual(title); |
| }, |
| enterTextIntoCustomFieldOfTypeText: function(text, fieldId){ |
| elem = $('input[id= "' + fieldId +'"]'); |
| elem.clear().click().sendKeys(text); |
| }, |
| enterTextIntoCustomFieldOfTypeNumber: function(text, fieldId){ |
| elem = $('input[id= "' + fieldId +'"]'); |
| elem.clear().click().sendKeys(text); |
| }, |
| enterTextIntoCustomDateInputField: function (date, fieldId) { |
| elem = $('input[id= "' + fieldId +'"]'); |
| elem.click().sendKeys(protractor.Key.ARROW_LEFT); |
| elem.sendKeys(protractor.Key.ARROW_LEFT); |
| elem.sendKeys(date); |
| }, |
| selectRadioButtonForSingleSelection: function(optionNumber, fieldId){ |
| elem = $('mat-radio-group[ng-reflect-name= "' + fieldId +'"]'); |
| elem.$$("mat-radio-button").get(optionNumber-1).click(); |
| }, |
| selectOptionForMultiSelection: function(option, fieldId){ |
| elem = $('td-chips[ng-reflect-name= "' + fieldId +'"]'); |
| elem.click(); |
| browser.wait(EC.visibilityOf($(".mat-option")), 5000); |
| element(by.cssContainingText('.mat-option',option)).click(); |
| }, |
| verifyCustomTextFieldInputHasError: function(fieldId, errorMessage) { |
| elem = $('input[id= "' + fieldId +'"]'); |
| expect(elem.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-error").getText()).toEqual(errorMessage); |
| }, |
| verifyCustomNumberFieldInputHasError: function(fieldId, errorMessage) { |
| elem = $('input[id= "' + fieldId +'"]'); |
| expect(elem.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-error").getText()).toEqual(errorMessage); |
| }, |
| }; |