Pages/Customers.js (326 lines of code) (raw):

/* * * 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. * */ //Customers.js //Actions specific to the Customers section var Common = require('./Common.js'); var EC = protractor.ExpectedConditions; //create customer var accountInput = $(".mat-input-infix input[placeholder='Account']"); var firstNameInput = $("fims-text-input[controlname='firstName'] input"); var middleNameInput = $("fims-text-input[controlname='middleName'] input"); var lastNameInput = $("fims-text-input[controlname='lastName'] input"); var birthDayInput = $("#dayOfBirth"); var memberCheckbox = $("mat-checkbox[formcontrolname='member']"); var streetInput = $("fims-text-input[controlname='street'] input"); var cityInput = $("fims-text-input[controlname='city'] input"); var countrySelect = $("input[formcontrolname='country']"); var emailInput = $("fims-text-input[controlname='email'] input"); var phoneInput = $("fims-text-input[controlname='phone'] input"); var mobileInput = $("fims-text-input[controlname='mobile'] input"); //create deposit account var productSelect = $("mat-select[formcontrolname='productIdentifier'] .mat-select-trigger"); var beneficiaryInput = $("td-chips[formcontrolname='beneficiaries'] input"); //create loan account var shortNameInput = $("fims-id-input[controlname='identifier'] input"); //identification cards var identificationCardNumberInput = $("fims-id-input[controlname='number'] input"); var typeInput = $("input[formcontrolname='type']"); var expirationDateInput = $("input[formcontrolname='expirationDate']"); var issuerInput = $("input[formcontrolname='issuer']"); //tasks var identifierInput = $("fims-id-input[controlname='identifier'] input"); var nameInput = $("fims-text-input[controlname='name'] input"); var descriptionInput = $("textarea[formcontrolname='identifier']"); var radioButtonFourEyes = $$("mat-radio-group[formcontrolname='type'] mat-radio-button").get(1); var radioButtonCustom = $$("mat-radio-group[formcontrolname='type'] mat-radio-button").get(2); var radioButtonIdentificationCard = $$("mat-radio-group[formcontrolname='type'] mat-radio-button").get(0); var checkboxMandatory = $("mat-checkbox[formcontrolname='mandatory']"); var checkboxAutoAssign = $("mat-checkbox[formcontrolname='predefined']"); //general elements var linkCustomers = $$("a[href='/customers']"); var primaryButton = $$(".mat-raised-button.mat-primary"); var continueButton = $$(".mat-raised-button.mat-accent"); module.exports = { createNewMember: function (customerAccount, firstName, lastName, dayOfBirth, street, city, country ) { this.clickButtonOrLinkCreateNewMember(); Common.verifyCardHasTitle("Create new member"); this.enterTextIntoAccountInputField(customerAccount); this.enterTextIntoFirstNameInputField(firstName); this.enterTextIntoLastNameInputField(lastName); this.enterTextIntoDayOfBirthInputField(dayOfBirth); this.clickEnabledContinueButtonForMemberDetails(); this.enterTextIntoStreetInputField(street); this.enterTextIntoCityInputField(city); this.selectCountryByName(country); this.clickEnabledContinueButtonForMemberAddress(); this.clickEnabledCreateMemberButton(); Common.verifyMessagePopupIsDisplayed("Member is going to be saved"); Common.verifyCardHasTitle("Manage members"); }, enterTextIntoAccountInputField: function (text) { browser.wait(EC.visibilityOf(accountInput), 3000); accountInput.click().sendKeys(text); }, enterTextIntoFirstNameInputField: function (text) { firstNameInput.click().sendKeys(text); }, enterTextIntoMiddleNameInputField: function (text) { middleNameInput.click().sendKeys(text); }, enterTextIntoLastNameInputField: function (text) { lastNameInput.click().sendKeys(text); }, enterTextIntoDayOfBirthInputField: function (date) { birthDayInput.click().sendKeys(protractor.Key.ARROW_LEFT); birthDayInput.sendKeys(protractor.Key.ARROW_LEFT); birthDayInput.sendKeys(date); }, enterTextIntoStreetInputField: function (text) { browser.sleep(100); browser.wait(EC.elementToBeClickable(streetInput), 5000); streetInput.clear().click().sendKeys(text); }, enterTextIntoCityInputField: function (text) { cityInput.click().sendKeys(text); }, enterTextIntoEmailInputField: function (text) { browser.wait(EC.elementToBeClickable(emailInput), 5000); emailInput.click().sendKeys(text); }, enterTextIntoPhoneInputField: function (text) { phoneInput.click().sendKeys(text); }, enterTextIntoMobileInputField: function (text) { mobileInput.click().sendKeys(text); }, clickEnabledContinueButtonForMemberDetails: function () { browser.wait(EC.elementToBeClickable(continueButton.get(0)), 5000); expect(continueButton.get(0).isEnabled()).toBeTruthy(); continueButton.get(0).click(); }, clickEnabledContinueButtonForMemberAddress: function () { browser.wait(EC.elementToBeClickable(continueButton.get(1)), 5000); expect(continueButton.get(1).isEnabled()).toBeTruthy(); continueButton.get(1).click(); }, clickEnabledContinueButtonForMemberContact: function () { browser.wait(EC.elementToBeClickable(continueButton.get(2)), 5000); expect(continueButton.get(2).isEnabled()).toBeTruthy(); continueButton.get(2).click(); }, clickEnabledCreateMemberButton: function () { browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement()); browser.wait(EC.elementToBeClickable(primaryButton.first()), 5000); expect(primaryButton.first().isEnabled()).toBeTruthy(); browser.wait(EC.elementToBeClickable(primaryButton.first()), 5000); primaryButton.first().click(); }, clickButtonOrLinkCreateNewMember: function () { browser.wait(EC.visibilityOf($("a[href='/customers/create']")), 5000); $("a[href='/customers/create']").click(); }, selectCountryByIndex: function (i) { countrySelect.click(); element.all(by.css('.mat-option')).get(i).click(); }, selectCountryByName: function (name) { countrySelect.click(); element(by.cssContainingText('.mat-option', name)).click(); }, goToManageCustomersViaSidePanel: function () { browser.wait(EC.visibilityOf(linkCustomers.first()), 5000); linkCustomers.first().click(); }, clickViewCustomersFromQuickAccess: function () { browser.wait(EC.visibilityOf(linkCustomers.get(1)), 5000); linkCustomer.get(1).click(); }, verifyMemberHasStatusInactive: function () { browser.wait(EC.visibilityOf($("td-message")), 2000); color = $("td-message").getAttribute("color"); message = $("td-message .td-message-label").getText(); expect(color).toEqual("warn"); expect(message).toContain("Member not active"); }, clickButtonGoToTasks: function () { browser.wait(EC.elementToBeClickable($("td-message button")), 2000); $("td-message button").click(); }, clickButtonActivate: function () { browser.wait(EC.elementToBeClickable($(".mat-raised-button.mat-accent")), 2000); $(".mat-raised-button.mat-accent").click(); }, verifyMemberHasStatusActive: function () { browser.wait(EC.visibilityOf($("fims-state-display")), 2000); status = $("fims-state-display .mat-list-text .mat-line").getText(); expect(status).toEqual("ACTIVE"); }, clickManageDepositAccountsForMember: function (customer) { link = "/customers/detail/" + customer + "/deposits"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickManageLoanAccountsForMember: function (customer) { link = "/customers/detail/" + customer + "/loans"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickViewIdentificationCardsForMember: function (customer) { link = "/customers/detail/" + customer + "/identifications"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickTasksForMember: function (customer) { link = "/customers/detail/" + customer + "/tasks"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickActivitiesForMember: function (customer) { link = "/customers/detail/" + customer + "/activities"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickPayrollForMember: function (customer) { link = "/customers/detail/" + customer + "/payroll"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickEditPayrollDistributionForMember: function (customer) { link = "/customers/detail/" + customer + "/payroll/edit"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000); $('a[href="' + link + '"]').click(); }, clickCreateDepositAccountForMember: function (customer) { link = "/customers/detail/" + customer + "/deposits/create"; browser.wait(EC.visibilityOf($('a[href="' + link + '"]'))); $('a[href="' + link + '"]').click(); }, clickCreateLoanAccountForMember: function (customer) { link = "/customers/detail/" + customer + "/loans/create"; browser.wait(EC.visibilityOf($('a[href="' + link + '"]'))); $('a[href="' + link + '"]').click(); }, selectProduct: function (productName) { browser.sleep(2000); browser.wait(EC.elementToBeClickable(productSelect), 3000); productSelect.click(); browser.wait(EC.visibilityOf($(".mat-option")), 5000); opt = element(by.cssContainingText('.mat-option', productName)); browser.executeScript("arguments[0].scrollIntoView();", opt.getWebElement()); browser.wait(EC.elementToBeClickable(opt), 2000); opt.click(); browser.wait(EC.invisibilityOf($("mat-tooltip-component")), 4000); }, selectProductFromOpenList: function (productName) { browser.wait(EC.visibilityOf($(".mat-option")), 5000); opt = element(by.cssContainingText('.mat-option', productName)); browser.executeScript("arguments[0].scrollIntoView();", opt.getWebElement()); browser.wait(EC.elementToBeClickable(opt), 2000); opt.click(); browser.wait(EC.invisibilityOf($("mat-tooltip-component")), 4000); }, clickEnabledButtonCreateDepositAccount: function () { browser.wait(EC.elementToBeClickable($(".mat-raised-button.mat-primary")), 5000); expect($(".mat-raised-button.mat-primary").isEnabled()).toBeTruthy(); $(".mat-raised-button.mat-primary").click(); }, verifyDepositAccountHasStatus: function (expectedStatus) { browser.wait(EC.visibilityOf($("fims-state-display")), 2000); status = $("fims-state-display .mat-list-text .mat-line").getText(); expect(status).toEqual(expectedStatus); }, clickButtonEditDepositAccount: function (customer, depositAccountIdentifier) { link = "/customers/detail/" + customer + "/deposits/detail/" + depositAccountIdentifier + "/edit"; browser.wait(EC.visibilityOf($('a[href="' + link + '"]')), 2000); $('a[href="' + link + '"]').click(); }, verifyDepositAccountBalanceIs: function (expectedBalance) { browser.sleep(1000); $$("fims-layout-card-over .mat-list-item .mat-list-text").filter(function (elem, index) { return elem.$("h3").getText().then(function (text) { return text === "Balance"; }); }).$$("p").first().getText().then(function (text) { return text === expectedBalance; }); }, verifyStateOfLoanAccountWithIdIs: function (identifier, expectedState) { browser.wait(EC.visibilityOf($("tbody tr")), 5000); //if > page of entries, need to implement way to page in order to find correct row actualState = $$('tbody tr').filter(function (elem, index) { return elem.$(".td-data-table-cell").getText().then(function (text) { return text === identifier; }); }).$$(".td-data-table-cell").get(4).getText(); expect(actualState).toEqual(expectedState); }, verifyStateOfDepositAccountWithId: function (identifier, expectedState) { browser.wait(EC.visibilityOf($("tbody tr")), 5000); //if > page of entries, need to implement way to page in order to find correct row actualState = $$('tbody tr').filter(function (elem, index) { return elem.$(".td-data-table-cell").getText().then(function (text) { return text === identifier; }); }).$$(".td-data-table-cell").get(3).getText(); expect(actualState).toEqual(expectedState); }, verifyIsMemberCheckboxSelected: function () { expect(memberCheckbox.getAttribute("class")).toMatch("mat-checkbox-checked"); }, uncheckMemberCheckbox: function (){ expect(memberCheckbox.getAttribute("class")).toMatch("mat-checkbox-checked"); memberCheckbox.click(); }, enterTextIntoShortNameInputField: function (text) { browser.wait(EC.elementToBeClickable(shortNameInput), 5000); shortNameInput.click().sendKeys(text); }, verifyTransactionCharge: function(chargeName, chargeAmount){ browser.sleep(1000); browser.wait(EC.visibilityOf($("fims-case-command-confirmation-form table tbody")), 3000); expect($$("fims-case-command-confirmation-form table tbody .td-data-table-row").filter(function(elem, index){ return elem.$(".td-data-table-cell").getText().then(function(text){ return text === chargeName; }); }).$$(".td-data-table-cell").last().getText().then(function(text){ return text === chargeAmount; })).toBe(true); }, clickButtonForTransaction: function (transaction) { $$('.mat-raised-button.mat-primary').filter(function (elem, index) { return elem.$("span").getText().then(function (text) { return text === transaction; }); }).click(); }, //customer tasks goToTasks: function(){ link = "/customers/tasks"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000); $('a[href="' + link + '"]').click(); }, clickButtonCreateNewTask: function(){ link = "/customers/tasks/create"; browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000); $('a[href="' + link + '"]').click(); }, selectExecuteTaskCheckbox: function(){ browser.wait(EC.visibilityOf($("mat-checkbox[title='Execute task']")), 3000); $("mat-checkbox[title='Execute task']").click(); expect($("mat-checkbox[title='Execute task']").getAttribute("class")).toMatch("mat-checkbox-checked"); }, clickButtonForTask: function (action) { $$('.mat-raised-button.mat-accent').filter(function (elem, index) { return elem.$("span").getText().then(function (text) { return text === action; }); }).click(); browser.sleep(300); }, goToStepCustomFields: function(){ browser.sleep(100); browser.wait(EC.elementToBeClickable($$(".td-step-label").get(5)), 3000); $$(".td-step-label").get(5).click(); }, verifyButtonCreateMemberDisabled: function(){ expect(primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CREATE MEMBER"; }); }).first().isEnabled()).toBe(false); }, verifyButtonCreateMemberEnabled: function(){ expect(primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CREATE MEMBER"; }); }).first().isEnabled()).toBe(true); }, };