Protractor tests.
diff --git a/Pages/Accounting b/Pages/Accounting
index aea7be6..f176446 100644
--- a/Pages/Accounting
+++ b/Pages/Accounting
@@ -27,10 +27,10 @@
link = "/accounting/accounts/detail/" + accountIdentifier + "/entries";
browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
$('a[href="'+ link + '"]').click();
- browser.sleep(2000);
+ browser.sleep(1000);
},
clickLinkShowForAccountWithName: function(identifier) {
- browser.sleep(2000);
+ browser.sleep(1000);
browser.wait(EC.invisibilityOf($("div[class='md-padding'] h3")), 5000);
browser.wait(EC.textToBePresentInElement($$("tbody tr .td-data-table-cell").last(), "SHOW"), 5000);
$$('tbody tr').filter(function(elem, index) {
diff --git a/Pages/Common.js b/Pages/Common.js
index 838b8d8..6f9bb76 100644
--- a/Pages/Common.js
+++ b/Pages/Common.js
@@ -17,7 +17,7 @@
expect($(".td-data-table-row .td-data-table-cell").getText()).toEqual(text);
},
waitForThePageToFinishLoading: function(){
- browser.wait(EC.not(EC.presenceOf($('.td-loading'))), 10000);
+ browser.wait(EC.not(EC.presenceOf($('.td-loading'))), 5000);
},
clickLinkShowForFirstRowInTable: function() {
browser.wait(EC.visibilityOf($("tr td.td-data-table-cell button")), 5000);
@@ -28,8 +28,8 @@
$$(".mat-toolbar .mat-toolbar-row .mat-icon-button").get(2).click();
},
clickLinkShowForRowWithId: function(identifier) {
- browser.sleep(2000);
browser.wait(EC.invisibilityOf($("div[class='md-padding'] h3")), 5000);
+ browser.sleep(1000);
browser.wait(EC.textToBePresentInElement($$("tbody tr .td-data-table-cell").last(), "SHOW"), 5000);
$$('tbody tr').filter(function (elem, index) {
return elem.$(".td-data-table-cell").getText().then(function (text) {
diff --git a/Pages/Customers.js b/Pages/Customers.js
index 46e0f44..ba6b7d2 100644
--- a/Pages/Customers.js
+++ b/Pages/Customers.js
@@ -17,183 +17,219 @@
var mobileInput = $(".mat-input-infix input[formcontrolname='mobile']");
var linkCustomers = $$("a[href='/customers']");
var titleRow = $("fims-layout-card-over .mat-toolbar-row div");
-var depositProductSelect = $("md-select[formcontrolname='productIdentifier']");
+var productSelect = $("md-select[formcontrolname='productIdentifier']");
var beneficiaryInput = $("td-chips[formcontrolname='beneficiaries'] input");
var primaryButton = $(".mat-raised-button.mat-primary");
var continueButton = $$(".mat-raised-button.mat-accent");
-var beneficiaryInput = $("td-chips[formcontrolname='beneficiaries'] input");
+var shortNameInput = $("fims-id-input[controlname='identifier'] input");
+var principalAmountInput = $("fims-number-input[controlname='principalAmount'] input");
+var termInput = $("input[formcontrolname='term']");
+var paymentPeriod = $("input[formcontrolname='paymentPeriod']");
+var depositAccountSelect = $("md-select[formcontrolname='depositAccountIdentifier'] .mat-select-trigger");
+
module.exports = {
- verifyCardHasTitleManageCustomers: function() {
+ verifyCardHasTitleManageCustomers: function () {
browser.wait(EC.textToBePresentInElement(titleRow, 'Manage customers'), 5000);
},
- verifyCardHasTitleCreateCustomer: function() {
- form_title=$("fims-layout-card-over .mat-toolbar-row div").getText();
+ verifyCardHasTitleCreateCustomer: function () {
+ form_title = $("fims-layout-card-over .mat-toolbar-row div").getText();
expect(form_title).toEqual("Create new customer");
},
- enterTextIntoAccountInputField: function(text) {
+ enterTextIntoAccountInputField: function (text) {
accountInput.click().sendKeys(text);
},
- enterTextIntoFirstNameInputField: function(text) {
+ enterTextIntoFirstNameInputField: function (text) {
firstNameInput.click().sendKeys(text);
},
- enterTextIntoMiddleNameInputField: function(text){
+ enterTextIntoMiddleNameInputField: function (text) {
middleNameInput.click().sendKeys(text);
},
- enterTextIntoLastNameInputField: function(text) {
+ enterTextIntoLastNameInputField: function (text) {
lastNameInput.click().sendKeys(text);
},
- enterTextIntoDayOfBirthInputField: function(){
+ enterTextIntoDayOfBirthInputField: function () {
birthDayInput.click().sendKeys(protractor.Key.ARROW_LEFT);
birthDayInput.sendKeys(protractor.Key.ARROW_LEFT);
birthDayInput.sendKeys("991978");
},
- enterTextIntoStreetInputField: function(text) {
- browser.wait(EC.elementToBeClickable(streetInput),3000);
+ enterTextIntoStreetInputField: function (text) {
+ browser.wait(EC.elementToBeClickable(streetInput), 3000);
streetInput.click().sendKeys(text);
},
- enterTextIntoCityInputField: function(text) {
+ enterTextIntoCityInputField: function (text) {
cityInput.click().sendKeys(text);
},
- enterTextIntoEmailInputField: function(text) {
+ enterTextIntoEmailInputField: function (text) {
emailInput.click().sendKeys(text);
},
- enterTextIntoPhoneInputField: function(text) {
+ enterTextIntoPhoneInputField: function (text) {
phoneInput.click().sendKeys(text);
},
- enterTextIntoMobileInputField: function(text) {
+ enterTextIntoMobileInputField: function (text) {
mobileInput.click().sendKeys(text);
},
- clickEnabledContinueButtonForCustomerDetails: function(){
+ clickEnabledContinueButtonForCustomerDetails: function () {
browser.wait(EC.elementToBeClickable(continueButton.get(0)), 5000);
expect(continueButton.get(0).isEnabled()).toBeTruthy();
continueButton.get(0).click();
},
- clickEnabledContinueButtonForCustomerAddress: function(){
+ clickEnabledContinueButtonForCustomerAddress: function () {
browser.wait(EC.elementToBeClickable(continueButton.get(1)), 5000);
expect(continueButton.get(1).isEnabled()).toBeTruthy();
continueButton.get(1).click();
},
- clickEnabledContinueButtonForCustomerContact: function(){
+ clickEnabledContinueButtonForCustomerContact: function () {
browser.wait(EC.elementToBeClickable(continueButton.get(2)), 5000);
expect(continueButton.get(2).isEnabled()).toBeTruthy();
continueButton.get(2).click();
},
- clickEnabledCreateCustomerButton: function(){
+ clickEnabledCreateCustomerButton: function () {
browser.executeScript("arguments[0].scrollIntoView();", primaryButton.getWebElement());
browser.wait(EC.elementToBeClickable(primaryButton), 5000);
expect(primaryButton.isEnabled()).toBeTruthy();
browser.wait(EC.elementToBeClickable(primaryButton), 5000);
primaryButton.click();
},
- clickButtonOrLinkCreateNewCustomer: function(){
+ clickButtonOrLinkCreateNewCustomer: function () {
browser.wait(EC.visibilityOf($("a[href='/customers/create']")), 5000);
$("a[href='/customers/create']").click();
},
- selectCountryByIndex: function(i){
+ selectCountryByIndex: function (i) {
countrySelect.click();
element.all(by.css('.mat-option')).get(i).click();
},
- selectCountryByName: function(name){
+ selectCountryByName: function (name) {
countrySelect.click();
- element(by.cssContainingText('.mat-option',name)).click();
+ element(by.cssContainingText('.mat-option', name)).click();
},
- goToManageCustomersViaSidePanel: function() {
+ goToManageCustomersViaSidePanel: function () {
browser.wait(EC.visibilityOf(linkCustomers.first()), 5000);
linkCustomers.first().click();
},
- clickViewCustomersFromQuickAccess: function() {
+ clickViewCustomersFromQuickAccess: function () {
browser.wait(EC.visibilityOf(linkCustomers.get(1)), 5000);
linkCustomer.get(1).click();
},
- verifyCustomerHasStatusInactive: function(){
+ verifyCustomerHasStatusInactive: 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("Customer not active");
},
- clickButtonGoToTasks: function(){
+ clickButtonGoToTasks: function () {
browser.wait(EC.elementToBeClickable($("td-message button")), 2000);
$("td-message button").click();
},
- clickButtonActivate: function(){
+ clickButtonActivate: function () {
browser.wait(EC.elementToBeClickable($(".mat-raised-button.mat-accent")), 2000);
$(".mat-raised-button.mat-accent").click();
},
- verifyCustomerHasStatusActive: function(){
+ verifyCustomerHasStatusActive: function () {
browser.wait(EC.visibilityOf($("fims-state-display")), 2000);
status = $("fims-state-display .mat-list-text .mat-line").getText();
expect(status).toEqual("ACTIVE");
},
- clickManageDepositAccountsForCustomer: function(customer){
+ clickManageDepositAccountsForCustomer: function (customer) {
link = "/customers/detail/" + customer + "/deposits";
- browser.wait(EC.elementToBeClickable($('a[href="'+ link + '"]')), 6000);
- $('a[href="'+ link + '"]').click();
+ browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000);
+ $('a[href="' + link + '"]').click();
},
- clickCreateDepositAccountForCustomer: function(customer){
+ clickManageLoanAccountsForCustomer: function (customer) {
+ link = "/customers/detail/" + customer + "/loans";
+ browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000);
+ $('a[href="' + link + '"]').click();
+ },
+ clickCreateDepositAccountForCustomer: function (customer) {
link = "/customers/detail/" + customer + "/deposits/create";
- browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
- $('a[href="'+ link + '"]').click();
+ browser.wait(EC.visibilityOf($('a[href="' + link + '"]')));
+ $('a[href="' + link + '"]').click();
},
- selectDepositProduct: function(depositProductName){
- depositProductSelect.click();
+ clickCreateLoanAccountForCustomer: function (customer) {
+ link = "/customers/detail/" + customer + "/loans/create";
+ browser.wait(EC.visibilityOf($('a[href="' + link + '"]')));
+ $('a[href="' + link + '"]').click();
+ },
+ selectProduct: function (productName) {
+ browser.wait(EC.visibilityOf(productSelect), 2000);
+ productSelect.click();
browser.wait(EC.visibilityOf($(".mat-option")), 5000);
- opt = element(by.cssContainingText('.mat-option', depositProductName));
+ opt = element(by.cssContainingText('.mat-option', productName));
browser.executeScript("arguments[0].scrollIntoView();", opt.getWebElement());
browser.wait(EC.elementToBeClickable(opt), 2000);
opt.click();
},
- clickEnabledButtonCreateDepositAccount: function(){
+ 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){
+ 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" ;
+ 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){
- $$("fims-layout-card-over .mat-list-item .mat-list-text").filter(function(elem, index) {
- return elem.$("h3").getText().then(function(text) {
- return text === "Balance";
+ verifyDepositAccountBalanceIs: function (expectedBalance) {
+ $$("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){
+ }).$$("p").first().getText().then(function (text) {
return text === expectedBalance;
});
},
- // getDepositAccountIdentifier: function(){
- // depAccount = $$("fims-layout-card-over .mat-list-item .mat-list-text").filter(function(elem, index) {
- // return elem.$("h3").getText().then(function(text) {
- // return text === "Account";
- // });
- // }).$$("p").first().getText().then(function(text){
- // return text;
- // });
- // return depAccount;
- // },
- // getDepositAccountIdentifier: function(){
- // return $$("md-list p").first().getText();
- // },
- verifyStateOfDepositAccountWithIdIs: function(identifier, expectedState) {
+ verifyStateOfDepositAccountWithIdIs: 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) {
+ 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() {
+ verifyIsMemberCheckboxSelected: function () {
expect(memberCheckbox.getAttribute("class")).toMatch("mat-checkbox-checked");
},
-};
\ No newline at end of file
+ enterTextIntoShortNameInputField: function (text) {
+ browser.wait(EC.elementToBeClickable(shortNameInput), 3000);
+ shortNameInput.click().sendKeys(text);
+ },
+ enterTextIntoPrincipalAmountInputField: function (text) {
+ principalAmountInput.click().sendKeys(protractor.Key.ARROW_LEFT);
+ principalAmountInput.sendKeys(protractor.Key.ARROW_LEFT);
+ principalAmountInput.sendKeys(protractor.Key.ARROW_LEFT);
+ principalAmountInput.sendKeys(protractor.Key.ARROW_LEFT);
+ principalAmountInput.sendKeys(text);
+ },
+ enterTextIntoTermInputField: function (text) {
+ termInput.click().clear().sendKeys(text);
+ },
+ selectDepositAccount: function (depositAccount) {
+ browser.executeScript("arguments[0].scrollIntoView();", depositAccountSelect.getWebElement());
+ browser.wait(EC.visibilityOf(depositAccountSelect), 2000);
+ productSelect.click();
+ browser.wait(EC.visibilityOf($(".mat-option")), 5000);
+ opt = element(by.cssContainingText('.mat-option', depositAccount));
+ browser.executeScript("arguments[0].scrollIntoView();", opt.getWebElement());
+ browser.wait(EC.elementToBeClickable(opt), 2000);
+ opt.click();
+ },
+ clickEnabledCreateCustomerLoanButton: function(){
+ browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
+ browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
+ primaryButton.filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "CREATE CUSTOMER LOAN";
+ });
+ }).click();
+ },
+};
diff --git a/Pages/Loans.js b/Pages/Loans.js
index 08d15bf..56dfab9 100644
--- a/Pages/Loans.js
+++ b/Pages/Loans.js
@@ -7,9 +7,9 @@
var createLoan = $("a[href='/loans/create']");
var shortNameInput = $("fims-id-input[controlname='identifier'] input");
var nameInput = $(".mat-input-infix input[formcontrolname='name']");
-var descriptionInput = $(".mat-input-infix input[formcontrolname='description']");
-var minimumPrincipalInput = $("fims-min-max[mincontrolname='minimumBalance']");
-var maximumPrincipalInput = $("fims-min-max[maxcontrolname='maximumBalance']");
+var descriptionInput = $(".mat-input-infix textarea[formcontrolname='description']");
+var minimumPrincipalInput = $("fims-min-max input[placeholder='Minimum principal amount']");
+var maximumPrincipalInput = $("fims-min-max input[placeholder='Maximum principal amount']");
var currencySelect = $("md-select[formcontrolname='currencyCode']");
var termInput = $(".mat-input-infix input[formcontrolname='term']");
var radioWeeks = $$("md-radio-group .mat-radio-button").first();
@@ -21,10 +21,32 @@
var customerLoanLedgerInput = $("fims-ledger-select[formcontrolname='customerLoanLedger'] input");
var pendingDisbursalAccountInput = $("fims-account-select[formcontrolname='pendingDisbursal'] input");
-var interestMinimumInput = $("fims-number-input[formcontrolname='minimum'] input");
+var interestMinimumInput = $("fims-number-input[controlname='minimum'] input");
var incomeAccountInput = $("fims-account-select[formcontrolname='incomeAccount'] input");
var accrualAccountInput = $("fims-account-select[formcontrolname='accrualAccount'] input");
+var processingFeeIncomeAccountInput = $("fims-account-select[formcontrolname='processingFeeAccount'] input");
+var originationFeeIncomeAccountInput = $("fims-account-select[formcontrolname='originationFeeAccount'] input");
+var disbursementFeeIncomeAccountInput = $("fims-account-select[formcontrolname='disbursementFeeAccount'] input");
+var lateFeeIncomeAccountInput = $("fims-account-select[formcontrolname='lateFeeIncomeAccount'] input");
+var lateFeeAccrualAccountInput = $("fims-account-select[formcontrolname='lateFeeAccrualAccount'] input");
+
+var arrearsAllowanceAccountInput = $("fims-account-select[formcontrolname='account'] input");
+
+var primaryButton = $$(".mat-raised-button.mat-primary");
+
+var feeAmountInput = $("input[formcontrolname='amount']");
+var feeProportionalToSelect = $("md-select[formcontrolname='proportionalTo'] .mat-select-trigger");
+var radioFixed = $$("md-radio-group[formcontrolname='chargeMethod'] md-radio-button").get(0);
+var radioProportional = $$("md-radio-group[formcontrolname='chargeMethod'] md-radio-button").get(1);
+
+var taskIdentifierInput = $("fims-id-input[controlname='identifier'] input");
+var taskNameInput = $(".mat-input-infix input[formcontrolname='name']");
+var taskDescriptionInput = $(".mat-input-infix textarea[formcontrolname='description']");
+var mandatoryCheckbox = $("md-checkbox[formcontrolname='mandatory']");
+var fourEyesCheckbox = $("md-checkbox[formcontrolname='fourEyes']");
+var actionSelect1 = $("md-select[formcontrolname='action'] .mat-select-trigger");
+var actionSelect2 = $$("md-select[formcontrolname='action'] .mat-select-trigger").get(1);
module.exports = {
goToLoanProductsViaSidePanel: function() {
@@ -49,6 +71,7 @@
descriptionInput.click().sendKeys(text);
},
enterTextIntoMinimumPrincipalInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", minimumPrincipalInput.getWebElement());
minimumPrincipalInput.click().sendKeys(protractor.Key.ARROW_LEFT);
minimumPrincipalInput.sendKeys(protractor.Key.ARROW_LEFT);
minimumPrincipalInput.sendKeys(protractor.Key.ARROW_LEFT);
@@ -66,11 +89,11 @@
},
enterTextIntoTermInputField: function(text) {
browser.executeScript("arguments[0].scrollIntoView();", termInput.getWebElement());
- termInput.click().sendKeys(text);
+ termInput.click().clear().sendKeys(text);
},
enterTextIntoCashAccountInputField: function(text) {
- browser.wait(EC.visibilityOf(shortNameInput), 5000);
browser.executeScript("arguments[0].scrollIntoView();", cashAccountInput.getWebElement());
+ browser.wait(EC.visibilityOf(cashAccountInput), 5000);
cashAccountInput.click().sendKeys(text);
},
enterTextIntoLoanInProcessLedgerInputField: function(text) {
@@ -83,7 +106,8 @@
pendingDisbursalAccountInput.click().sendKeys(text);
},
enterTextIntoInterestMinimumInputField: function(text) {
- browser.wait(EC.visibilityOf(interestMinimumInput), 5000);
+ browser.executeScript("arguments[0].scrollIntoView();", interestMinimumInput.getWebElement());
+ browser.wait(EC.elementToBeClickable(interestMinimumInput), 5000);
interestMinimumInput.click().clear().sendKeys(text);
},
enterTextIntoIncomeAccountAccountInputField: function(text) {
@@ -106,5 +130,138 @@
browser.executeScript("arguments[0].scrollIntoView();", $$(".mat-raised-button").get(2).getWebElement());
expect($$(".mat-raised-button").get(2).isEnabled()).toBeTruthy();
$$(".mat-raised-button").get(2).click();
- }
+ },
+ clickEnabledContinueButtonForFeeIncomeAccounts: function(){
+ browser.executeScript("arguments[0].scrollIntoView();", $$(".mat-raised-button").get(3).getWebElement());
+ expect($$(".mat-raised-button").get(3).isEnabled()).toBeTruthy();
+ $$(".mat-raised-button").get(3).click();
+ },
+ enterTextIntoProcessingFeeIncomeAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", processingFeeIncomeAccountInput.getWebElement());
+ browser.wait(EC.elementToBeClickable(processingFeeIncomeAccountInput), 2000);
+ processingFeeIncomeAccountInput.click().sendKeys(text);
+ },
+ enterTextIntoOriginatingFeeIncomeAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", originationFeeIncomeAccountInput.getWebElement());
+ originationFeeIncomeAccountInput.click().sendKeys(text);
+ },
+ enterTextIntoDisbursementFeeIncomeAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", disbursementFeeIncomeAccountInput.getWebElement());
+ disbursementFeeIncomeAccountInput.click().sendKeys(text);
+ },
+ enterTextIntoLateFeeIncomeAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", lateFeeIncomeAccountInput.getWebElement());
+ lateFeeIncomeAccountInput.click().sendKeys(text);
+ },
+ enterTextIntoLateFeeAccrualAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", lateFeeAccrualAccountInput.getWebElement());
+ lateFeeAccrualAccountInput.click().sendKeys(text);
+ },
+ enterTextIntoArrearsAllowanceAccountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", arrearsAllowanceAccountInput.getWebElement());
+ arrearsAllowanceAccountInput.click().sendKeys(text);
+ },
+ clickEnabledCreateProductButton: function(){
+ browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
+ browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
+ primaryButton.filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "CREATE PRODUCT";
+ });
+ }).click();
+ },
+ clickLinkManageFeesForLoanProduct: function(identifier){
+ link = "/loans/detail/" + identifier + "/charges";
+ browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+ $('a[href="'+ link + '"]').click();
+ },
+ clickButtonEditProcessingFeeForLoanProduct: function(identifier){
+ link = "/loans/detail/" + identifier + "/charges/detail/processing-fee/edit";
+ browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+ $('a[href="'+ link + '"]').click();
+ },
+ clickLinkManageTasksForLoanProduct: function(identifier){
+ link = "/loans/detail/" + identifier + "/tasks";
+ browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+ $('a[href="'+ link + '"]').click();
+ },
+ clickButtonCreateTaskForLoanProduct: function(identifier){
+ link = "/loans/detail/" + identifier + "/tasks/create";
+ browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+ $('a[href="'+ link + '"]').click();
+ },
+ enterTextIntoFeeAmountInputField: function(text) {
+ browser.executeScript("arguments[0].scrollIntoView();", feeAmountInput.getWebElement());
+ browser.wait(EC.visibilityOf(feeAmountInput), 5000);
+ feeAmountInput.click().clear().sendKeys(text);
+ },
+ clickEnabledUpdateChargeButton: function(){
+ browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
+ browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
+ primaryButton.filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "UPDATE CHARGE";
+ });
+ }).click();
+ },
+ enterTextIntoTaskIdentifierInputField: function(text) {
+ browser.wait(EC.visibilityOf(taskIdentifierInput), 5000);
+ taskIdentifierInput.click().sendKeys(text);
+ },
+ enterTextIntoTaskNameInputField: function(text) {
+ taskNameInput.click().sendKeys(text);
+ },
+ enterTextIntoTaskDescriptionInputField: function(text) {
+ taskDescriptionInput.click().sendKeys(text);
+ },
+ checkMandatoryCheckbox: function(){
+ mandatoryCheckbox.click();
+ },
+ checkFourEyesCheckbox: function(){
+ fourEyesCheckbox.click();
+ },
+ clickButtonAddAction: function(){
+ $$("fims-layout-card-over button.mat-button").filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "Add action";
+ });
+ }).click();
+ },
+ clickButtonCancel: function(){
+ $$("fims-layout-card-over button.mat-button").filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "Cancel";
+ });
+ }).click();
+ },
+ clickFirstRemoveButton: function(){
+ $$("fims-layout-card-over button.mat-button").filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "Remove";
+ });
+ }).click();
+ },
+ clickEnabledCreateTaskButton: function(){
+ browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
+ browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
+ primaryButton.filter(function(elem, index) {
+ return elem.$("span").getText().then(function(text) {
+ return text === "CREATE TASK";
+ });
+ }).click();
+ },
+ selectFirstAction: function(action){
+ actionSelect1.click();
+ browser.wait(EC.visibilityOf($(".mat-option")), 5000);
+ element(by.cssContainingText('.mat-option', action)).click();
+ },
+ selectSecondAction: function(action){
+ actionSelect2.click();
+ browser.wait(EC.visibilityOf($(".mat-option")), 5000);
+ element(by.cssContainingText('.mat-option', action)).click();
+ },
+ clickButtonEnableProduct: function(){
+ browser.wait(EC.elementToBeClickable($("td-message button")), 2000);
+ $("td-message button").click();
+ },
};
\ No newline at end of file
diff --git a/Specs/gate1.js b/Specs/gate1.js
index d546dce..e05d723 100644
--- a/Specs/gate1.js
+++ b/Specs/gate1.js
@@ -43,6 +43,8 @@
tellerAccount = helper.getRandomString(4);
revenueAccount = helper.getRandomString(4);
loanShortName = helper.getRandomString(6);
+ taskIdentifier = helper.getRandomString(3);
+ loanAccountShortName = helper.getRandomString(4);
it('should create a new administrator role', function () {
Common.waitForThePageToFinishLoading();
@@ -224,7 +226,7 @@
Common.clickLinkShowForRowWithId(customerAccount);
Customers.clickManageDepositAccountsForCustomer(customerAccount);
Customers.clickCreateDepositAccountForCustomer(customerAccount);
- Customers.selectDepositProduct(depositName);
+ Customers.selectProduct(depositName);
Customers.clickEnabledButtonCreateDepositAccount();
Common.verifyMessagePopupIsDisplayed("Deposit account is going to be saved");
//might not be in list immediately always
@@ -384,6 +386,7 @@
Loans.clickButtonCreateLoanProduct();
Loans.enterTextIntoShortNameInputField(loanShortName);
Loans.enterTextIntoNameInputField("My loan " + loanShortName);
+ Loans.enterTextIntoDescriptionInputField("My loan " + loanShortName);
Loans.enterTextIntoMinimumPrincipalInputField("200");
Loans.enterTextIntoMaximumPrincipalInputField("1000");
Loans.enterTextIntoTermInputField("12");
@@ -393,11 +396,64 @@
Loans.enterTextIntoCustomerLoanLedgerInputField("7900");
Loans.enterTextIntoPendingDisbursalAccountInputField("7013");
Loans.clickEnabledContinueButtonForLedgerAndAccountSettings("7810");
- Loans.enterTextIntoInterestMinimumInputField("3.5");
+ Loans.enterTextIntoInterestMinimumInputField("3.50");
Loans.enterTextIntoIncomeAccountAccountInputField(revenueAccount);
- Loans.enterTextIntoAccrualAccountInputField();
+ Loans.enterTextIntoAccrualAccountInputField("7015");
+ Loans.clickEnabledContinueButtonForInterestSettings();
+ Loans.enterTextIntoProcessingFeeIncomeAccountInputField("1312");
+ Loans.enterTextIntoOriginatingFeeIncomeAccountInputField("1310");
+ Loans.enterTextIntoDisbursementFeeIncomeAccountInputField("1390");
+ Loans.enterTextIntoLateFeeIncomeAccountInputField("1311");
+ Loans.enterTextIntoLateFeeAccrualAccountInputField("7840");
+ Loans.clickEnabledContinueButtonForFeeIncomeAccounts("");
+ Loans.enterTextIntoArrearsAllowanceAccountInputField("3040");
+ Loans.clickEnabledCreateProductButton();
+ Common.verifyMessagePopupIsDisplayed("Product is going to be saved");
});
-
- //assign loan to customer
-
+ it('should edit charges', function (){
+ Common.clickLinkShowForRowWithId(loanShortName);
+ Loans.clickLinkManageFeesForLoanProduct(loanShortName);
+ Common.clickLinkShowForRowWithId("processing-fee");
+ Loans.clickButtonEditProcessingFeeForLoanProduct(loanShortName);
+ Loans.enterTextIntoFeeAmountInputField("3");
+ Loans.clickEnabledUpdateChargeButton();
+ Common.verifyMessagePopupIsDisplayed("Charge is going to be saved");
+ Common.clickBackButtonInTitleBar();
+ Common.clickBackButtonInTitleBar();
+ });
+ it('should add task', function () {
+ Loans.clickLinkManageTasksForLoanProduct(loanShortName);
+ Loans.clickButtonCreateTaskForLoanProduct(loanShortName);
+ Loans.enterTextIntoTaskIdentifierInputField(taskIdentifier);
+ Loans.enterTextIntoTaskNameInputField("Loan opening task");
+ Loans.enterTextIntoTaskDescriptionInputField("Loan opening task - mandatory");
+ Loans.checkMandatoryCheckbox();
+ Loans.clickButtonAddAction();
+ Loans.selectSecondAction("can be approved");
+ Loans.clickEnabledCreateTaskButton();
+ Common.verifyMessagePopupIsDisplayed("Task is going to be created");
+ Common.clickBackButtonInTitleBar();
+ });
+ it('should enable the loan product', function () {
+ Loans.clickButtonEnableProduct();
+ Common.verifyMessagePopupIsDisplayed("Product is going to be enabled");
+ });
+ it('should assign loan product to customer', function () {
+ Customers.goToManageCustomersViaSidePanel();
+ Common.clickSearchButtonToMakeSearchInputFieldAppear();
+ Common.enterTextInSearchInputFieldAndApplySearch(customerAccount);
+ Common.verifyFirstRowOfSearchResultHasTextAsId(customerAccount);
+ Common.clickLinkShowForRowWithId(customerAccount);
+ Customers.clickManageLoanAccountsForCustomer(customerAccount);
+ Customers.clickCreateLoanAccountForCustomer(customerAccount);
+ Customers.selectProduct("My loan " + loanShortName);
+ Customers.enterTextIntoShortNameInputField(loanAccountShortName);
+ Customers.enterTextIntoPrincipalAmountInputField("5000");
+ //verify interest rate as expected and cannot be changed; currently always 0.00 (bug)
+ Customers.enterTextIntoTermInputField("12");
+ //verify correct radio button selected
+ Customers.selectDepositAccount(customerAccount + ".9100.00001(" + depositIdentifier + ")");
+ Customers.clickEnabledCreateCustomerButton();
+ Common.verifyMessagePopupIsDisplayed("Case is going to be saved");
+ });
});
\ No newline at end of file
diff --git a/conf.js b/conf.js
index ff0655f..6129d01 100644
--- a/conf.js
+++ b/conf.js
@@ -9,7 +9,7 @@
'Specs/gate1.js'
],
directConnect: true,
- allScriptsTimeout: 15000,
+ allScriptsTimeout: 25000,
capabilities: {
browserName: 'chrome',
chromeOptions: {