Pages/Teller.js (238 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. * */ //Teller.js //Actions specific to the Teller section var EC = protractor.ExpectedConditions; var tellerNumberInput = $("input[placeholder='Teller number']"); var passwordInput = $("input[formcontrolname='password']"); var accountSelect = $("mat-select[formcontrolname='productInstance'] .mat-select-trigger"); var amountInput = $("fims-text-input[controlname='amount'] input"); var primaryButton = $$(".mat-raised-button.mat-primary"); var checkboxChargesInCash = $("mat-checkbox"); var loanAccountSelect = $("mat-select[formcontrolname='caseInstance'] .mat-select-trigger"); module.exports = { goToTellerManagementViaSidePanel: function() { browser.wait(EC.elementToBeClickable($("a[href='/teller']")), 5000); $("a[href='/teller']").click(); }, enterTextIntoTellerNumberInputField: function(text) { browser.wait(EC.visibilityOf(tellerNumberInput), 5000); tellerNumberInput.click().sendKeys(text); }, enterTextIntoPasswordInputField: function(text) { passwordInput.click().sendKeys(text); }, clickEnabledUnlockTellerButton: function(){ primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "UNLOCK"; }); }).click(); }, enterTextIntoSearchInputField: function(text){ browser.wait(EC.visibilityOf($("td-search-input input")), 5000); $("td-search-input input").click().sendKeys(text); //not good, need other way to prevent test from clicking too fast browser.sleep(2000); }, clickButtonShowAtIndex: function(i){ browser.wait(EC.visibilityOf($$("button[title='SHOW']").get(i)), 5000); $$("button[title='SHOW']").get(i).click(); }, verifyCardTitleHasNameOfCustomer: function (text) { browser.wait(EC.presenceOf($('fims-portrait')), 10000); form_title = $$("fims-layout-card-over .mat-toolbar-row span").get(1).getText(); expect(form_title).toMatch(text); }, pauseTeller: function(){ $("a[title='Pause']").click(); }, verifyTellerIsLocked: function(){ browser.wait(EC.visibilityOf(tellerNumberInput), 3000); }, clickOnOpenAccountForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCO"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 5000); a.click(); browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000); }, verifyActionOpenAccountNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCO"; a = $('a[href= "' + link +'"]'); browser.wait(EC.invisibilityOf(a), 5000); expect(a.isPresent()).toBe(false); }, clickOnCloseAccountForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCC"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 3000); a.click(); browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000); }, verifyActionCloseAccountNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCC"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, verifyActionCloseAccountOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCC"; a = $('a[href= "' + link +'"]'); browser.wait(EC.visibilityOf(a), 3000); expect(a.isPresent()).toBe(true); }, clickOnTransferAccountForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCT"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 3000); a.click(); browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000); }, verifyActionAccountTransferNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=ACCT"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, clickOnCashDepositForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=CDPT"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 3000); a.click(); browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000); }, verifyActionCashDepositNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=CDPT"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, clickOnCashWithdrawalForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=CWDL"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 5000); a.click(); browser.wait(EC.visibilityOf($("fims-teller-transaction-form")), 2000); }, verifyActionCashWithdrawalNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=CWDL"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, clickOnCashChequeForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/cheque?transactionType=CCHQ"; a = $('a[href= "' + link +'"]'); browser.wait(EC.visibilityOf(a), 5000); browser.executeScript("arguments[0].scrollIntoView();", a.getWebElement()); a.click(); browser.wait(EC.presenceOf($("fims-cheque-transaction-form")), 4000); }, verifyActionCashChequeNotDisplayedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/cheque?transactionType=CCHQ"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, clickOnRepayLoanForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/loan?transactionType=PPAY"; a = $('a[href= "' + link +'"]'); browser.wait(EC.elementToBeClickable(a), 3000); a.click(); browser.wait(EC.visibilityOf($("fims-loan-transaction-form")), 2000); }, verifyActionRepayLoanNotOfferedForCustomer: function(customerAccount){ link = "/teller/customers/detail/" + customerAccount + "/transaction/deposit?transactionType=PPAY"; a = $('a[href= "' + link +'"]'); expect(a.isPresent()).toBe(false); }, selectAccountToBeAffected: function(accountIdentifier){ browser.sleep(2000); browser.wait(EC.elementToBeClickable(accountSelect), 3000); accountSelect.click(); browser.wait(EC.visibilityOf($(".mat-option")), 5000); //browser.executeScript("arguments[0].scrollIntoView();", element(by.cssContainingText('.mat-option', accountIdentifier)).getWebElement()); element(by.cssContainingText('.mat-option', accountIdentifier)).click(); }, selectLoanAccountToBeAffected: function(loanAccountIdentifier){ browser.sleep(2000); browser.wait(EC.elementToBeClickable(loanAccountSelect), 3000); loanAccountSelect.click(); browser.wait(EC.visibilityOf($(".mat-option")), 5000); //browser.executeScript("arguments[0].scrollIntoView();", element(by.cssContainingText('.mat-option', accountIdentifier)).getWebElement()); element(by.cssContainingText('.mat-option', loanAccountIdentifier)).click(); browser.sleep(1500); }, enterTextIntoAmountInputField: function(text) { browser.wait(EC.elementToBeClickable(amountInput), 5000); amountInput.click().clear().sendKeys(text); }, verifyAmountInputFieldHasError: function(text) { $(".text-md").click(); expect(amountInput.getAttribute("class")).toMatch("ng-invalid"); expect(amountInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-error").getText()).toEqual(text); }, clickEnabledCreateTransactionButton: function(){ primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CREATE TRANSACTION"; }); }).click(); }, verifyCreateTransactionButtonIsDisabled: function(){ expect(primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CREATE TRANSACTION"; }); }).first().isEnabled()).toBe(false); }, verifyCreateTransactionButtonIsEnabled: function(){ expect(primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CREATE TRANSACTION"; }); }).first().isEnabled()).toBe(true); }, clickEnabledConfirmTransactionButton: function(){ browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(1).getWebElement()); browser.sleep(1000); browser.wait(EC.elementToBeClickable(primaryButton.get(1)), 4000); primaryButton.filter(function(elem, index) { return elem.$("span").getText().then(function(text) { return text === "CONFIRM TRANSACTION"; }); }).click(); }, verifyChargesPayedInCashCheckboxChecked: function(){ classCB = checkboxChargesInCash.getAttribute("class"); expect(classCB).toMatch("mat-checkbox-checked"); }, uncheckChargesPayedInCashCheckbox: function(){ this.verifyChargesPayedInCashCheckboxChecked(); checkboxChargesInCash.click(); }, verifyChargesPayedInCashCheckboxNotChecked: function(){ classCB = checkboxChargesInCash.getAttribute("class"); expect(classCB).not.toMatch("mat-checkbox-checked"); }, verifyTransactionAmount: function(amount){ browser.wait(EC.visibilityOf($("fims-teller-transaction-cost table tbody")), 2000); expect($$("fims-teller-transaction-cost table tbody .td-data-table-row").filter(function(elem, index){ return elem.$$(".td-data-table-cell").first().getText().then(function(text){ return text === "Transaction amount"; }); }).$$(".td-data-table-cell").last().getText().then(function(text){ return text === amount; })).toBe(true); }, verifyTransactionCharge: function(chargeName, chargeAmount){ expect($$("fims-teller-transaction-cost 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); }, verifyCashdrawLimitHintIsDisplayed: function(text){ browser.wait(EC.textToBePresentInElement($(".text-md"), text), 5000); }, verifyExpectedPaymentAmount: function(text) { browser.wait(EC.textToBePresentInElement($("fims-loan-transaction-form p"), text), 2000); }, getExpectedPaymentAmount: function() { browser.sleep(1000); return $("fims-loan-transaction-form p").getText().then(function(text){ return text.substring(18); }); }, };