| //Offices.js |
| var Common = require('./Common.js'); |
| |
| //office creation |
| var officeIdentifierInput = $(".mat-input-infix input[placeholder='Identifier']"); |
| var officeNameInput = $("fims-text-input[controlname='name'] input"); |
| var officeDescriptionInput = $("fims-text-input[controlname='description'] input"); |
| var streetInput = $("fims-text-input[controlname='street'] input"); |
| var cityInput = $("fims-text-input[controlname='city'] input"); |
| var postalCodeInput = $("fims-text-input[controlname='postalCode'] input"); |
| var regionInput = $("fims-text-input[controlname='region'] input"); |
| var countryInput = $("input[formcontrolname='country']"); |
| |
| //teller creation |
| var numberInput = $(".mat-input-infix input[placeholder='Number']"); |
| var passwordInput = $("input[formcontrolname='password']"); |
| var withdrawalLimitInput = $("fims-text-input[controlname='cashdrawLimit'] input"); |
| var tellerAccountInput = $("fims-account-select[formcontrolname='tellerAccountIdentifier'] input"); |
| var vaultAccountInput = $("fims-account-select[formcontrolname='vaultAccountIdentifier'] input"); |
| var chequesReceivableAccountInput = $("fims-account-select[formcontrolname='chequesReceivableAccount'] input"); |
| var cashOverShortAccountInput = $("fims-account-select[formcontrolname='cashOverShortAccount'] input"); |
| var checkboxDenominationRequired = $("mat-checkbox[formcontrolname='denominationRequired'] label"); |
| |
| //open teller |
| var assignedEmployeeInput = $("fims-employee-auto-complete[formcontrolname='assignedEmployeeIdentifier'] input"); |
| var amountInput = $("fims-text-input[controlname='amount'] input"); |
| var radioNone = $$("mat-radio-group[formcontrolname='adjustment'] mat-radio-button").first(); |
| var radioCashIn = $$("mat-radio-group[formcontrolname='adjustment'] mat-radio-button").last(); |
| var radioCashOut = $$("mat-radio-group[formcontrolname='adjustment'] mat-radio-button").last(); |
| |
| //general elements |
| var primaryButton = $$(".mat-raised-button.mat-primary"); |
| var createOfficeButton = $$(".mat-raised-button.mat-primary").first(); |
| var buttons = $$(".mat-button"); |
| |
| |
| //Actions specific to the Offices section, including Teller management |
| |
| var EC = protractor.ExpectedConditions; |
| |
| module.exports = { |
| goToManageOfficesViaSidePanel: function() { |
| browser.wait(EC.visibilityOf($$("a[href='/offices']").get(0)), 5000); |
| $$("a[href='/offices']").first().click(); |
| }, |
| clickViewOfficesFromQuickAccess: function() { |
| browser.wait(EC.visibilityOf($$("a[href='/offices']").get(1)), 5000); |
| $$("a[href='/offices']").get(1).click(); |
| }, |
| clickButtonCreateNewOffice: function(){ |
| browser.wait(EC.visibilityOf($("a[title='Create branch office']")), 5000); |
| $("a[title='Create branch office']").click(); |
| }, |
| enterTextIntoOfficeIdentifierInputField: function(text) { |
| officeIdentifierInput.click().sendKeys(text); |
| }, |
| enterTextIntoOfficeNameInputField: function(text) { |
| officeNameInput.click().sendKeys(text); |
| }, |
| enterTextIntoOfficeDescriptionInputField: function(text){ |
| officeDescriptionInput.click().sendKeys(text); |
| }, |
| clickEnabledContinueButtonForOfficeDetails: function(){ |
| expect($$(".mat-raised-button").get(0).isEnabled()).toBeTruthy(); |
| $$(".mat-raised-button").get(0).click(); |
| }, |
| clickCreateOfficeButton: function(){ |
| browser.executeScript("arguments[0].scrollIntoView();", createOfficeButton.getWebElement()); |
| browser.wait(EC.elementToBeClickable(createOfficeButton), 3000); |
| primaryButton.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE OFFICE"; |
| }); |
| }).click(); |
| }, |
| clickButtonCreateHeadquarter: function(){ |
| expect($(".mat-raised-button.mat-primary").isEnabled()).toBeTruthy(); |
| $(".mat-raised-button.mat-primary").click(); |
| }, |
| verifyNoHeadquarterExistingYet: function(){ |
| browser.wait(EC.visibilityOf($(".mat-card-title .material-icons")), 5000); |
| title = $(".mat-card .mat-card-title span").getText(); |
| expect(title).toEqual("No Headquarter found"); |
| }, |
| |
| //teller creation, updating, opening and closing |
| goToManageTellersForOfficeByIdentifier: function(identifier){ |
| link = '/offices/detail/' + identifier + '/tellers'; |
| browser.wait(EC.visibilityOf($('a[href="' + link +'"]')), 5000); |
| $('a[href="' + link +'"]').click(); |
| }, |
| |
| clickCreateTellerForOfficeByIdentifier: function(identifier){ |
| link = '/offices/detail/' + identifier + '/tellers/create'; |
| browser.wait(EC.visibilityOf($('a[href="' + link + '"]')), 5000); |
| $('a[href="' + link + '"]').click(); |
| }, |
| enterTextIntoTellerNumberInputField: function(text) { |
| browser.wait(EC.visibilityOf(numberInput), 5000); |
| numberInput.click().sendKeys(text); |
| }, |
| enterTextIntoPasswordInputField: function(text) { |
| browser.wait(EC.visibilityOf(passwordInput), 5000); |
| passwordInput.click().clear().sendKeys(text); |
| }, |
| enterTextIntoCashWithdrawalLimitInputField: function(text) { |
| withdrawalLimitInput.click().clear().sendKeys(text); |
| }, |
| verifyCashWithdrawalLimitInputFieldHasError: function(text) { |
| expect(withdrawalLimitInput.getAttribute("class")).toMatch("ng-invalid"); |
| expect(withdrawalLimitInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-error").getText()).toEqual(text); |
| }, |
| enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry: function(text) { |
| tellerAccountInput.click().clear().sendKeys(text); |
| browser.wait(EC.visibilityOf($(".mat-option")), 5000); |
| $$(".mat-option").first().click(); |
| }, |
| enterTextIntoVaultAccountInputFieldAndSelectMatchingEntry: function(text) { |
| vaultAccountInput.click().clear().sendKeys(text); |
| browser.wait(EC.visibilityOf($(".mat-option")), 5000); |
| $$(".mat-option").first().click(); |
| }, |
| enterTextIntoCashOverShortInputFieldAndSelectMatchingEntry: function(text) { |
| cashOverShortAccountInput.click().clear().sendKeys(text); |
| browser.wait(EC.visibilityOf($(".mat-option")), 5000); |
| $$(".mat-option").first().click(); |
| }, |
| enterTextIntoVaultAccountInputField: function(text) { |
| vaultAccountInput.click().clear().sendKeys(text); |
| }, |
| verifyVaultAccountInputFieldHasError: function(text) { |
| expect(vaultAccountInput.getAttribute("class")).toMatch("ng-invalid"); |
| expect(vaultAccountInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-error").getText()).toEqual(text); |
| }, |
| enterTextIntoChequesReceivableAccountInputFieldAndSelectMatchingEntry: function(text) { |
| chequesReceivableAccountInput.click().clear().sendKeys(text); |
| browser.wait(EC.visibilityOf($(".mat-option")), 5000); |
| $$(".mat-option").first().click(); |
| }, |
| enterTextIntoChequesReceivableAccountInputField: function(text) { |
| chequesReceivableAccountInput.click().clear().sendKeys(text); |
| }, |
| verifyChequesReceivableAccountInputFieldHasError: function(text) { |
| browser.wait(EC.presenceOf($("mat-hint")), 2500); |
| expect(chequesReceivableAccountInput.element(by.xpath("..")).element(by.xpath("..")).element(by.xpath("..")).$("mat-hint").getText()).toEqual(text); |
| }, |
| verifyCheckboxDenominationRequiredChecked: function () { |
| expect(checkboxDenominationRequired.getAttribute("class")).toMatch("mat-checkbox-checked"); |
| }, |
| checkCheckboxDenominationRequired: function () { |
| checkboxDenominationRequired.click(); |
| }, |
| //open teller |
| verifyRadioNoneSelected: function(){ |
| expect(radioNone.getAttribute('class')).toMatch("mat-radio-checked"); |
| }, |
| selectRadioCashIn: function(){ |
| radioCashIn.click(); |
| }, |
| selectRadioCashOut: function(){ |
| browser.wait(EC.elementToBeClickable(radioCashOut), 2500); |
| radioCashOut.click(); |
| }, |
| verifyAmountInputDisabledIfNoneSelected: function(){ |
| expect(amountInput.isEnabled()).toBe(false); |
| }, |
| verifyAmountInputEnabledIfCashInSelected: function(){ |
| expect(amountInput.isEnabled()).toBe(true); |
| }, |
| enterTextIntoAmountInputField: function(text) { |
| amountInput.click().sendKeys(text); |
| }, |
| enterTextIntoAssignedEmployeeInputField: function(text) { |
| assignedEmployeeInput.click().sendKeys(text); |
| }, |
| selectOptionInListByName: function(name){ |
| browser.wait(EC.visibilityOf($(".mat-option")), 3000); |
| element(by.cssContainingText('.mat-option', name)).click(); |
| }, |
| clickCreateTellerButton: function(){ |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement()); |
| browser.sleep(1000); |
| primaryButton.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE TELLER"; |
| }); |
| }).click(); |
| }, |
| verifyCreateTellerButtonIsDisabled: function(){ |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement()); |
| expect(primaryButton.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE TELLER"; |
| }); |
| }).first().isEnabled()).toBe(false); |
| }, |
| verifyCreateTellerButtonIsEnabled: function(){ |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement()); |
| browser.sleep(1000); |
| expect(primaryButton.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "CREATE TELLER"; |
| }); |
| }).first().isEnabled()).toBe(true); |
| }, |
| clickUpdateTellerButton: function(){ |
| browser.executeScript("arguments[0].scrollIntoView();", primaryButton.get(0).getWebElement()); |
| primaryButton.filter(function(elem, index) { |
| return elem.$("span").getText().then(function(text) { |
| return text === "UPDATE TELLER"; |
| }); |
| }).click(); |
| }, |
| clickActionOpenForTellerOfOffice: function(teller, office){ |
| link = '/offices/detail/' + office + '/tellers/detail/' + teller + '/command?action=OPEN'; |
| browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000); |
| $('a[href="' + link + '"]').click(); |
| }, |
| clickActionCloseForTellerOfOffice: function(teller, office){ |
| link = '/offices/detail/' + office + '/tellers/detail/' + teller + '/command?action=CLOSE'; |
| browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000); |
| $('a[href="' + link + '"]').click(); |
| }, |
| clickButtonEditForTellerInOffice: function(teller, office){ |
| link = '/offices/detail/' + office + '/tellers/detail/' + teller + '/edit'; |
| browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000); |
| $('a[href="' + link + '"]').click(); |
| }, |
| clickEnabledOpenTellerButton: function(){ |
| browser.wait(EC.visibilityOf($(".mat-raised-button.mat-primary")), 5000); |
| browser.sleep(1000); |
| //expect($(".mat-raised-button.mat-primary").isEnabled()).toBeTruthy(); |
| $(".mat-raised-button.mat-primary").click(); |
| }, |
| clickCloseTellerButton: function(){ |
| browser.wait(EC.visibilityOf($(".mat-raised-button.mat-primary")), 5000); |
| browser.sleep(1000); |
| //expect($(".mat-raised-button.mat-primary").isEnabled()).toBeTruthy(); |
| $(".mat-raised-button.mat-primary").click(); |
| }, |
| verifyTellerStatusIs: function(expectedStatus){ |
| browser.wait(EC.visibilityOf($("fims-state-display")), 5000); |
| status = $("fims-state-display .mat-list-text .mat-line").getText(); |
| expect(status).toEqual(expectedStatus); |
| }, |
| verifyMessageDisplayed: function(message){ |
| expect($("td-message .td-message-label").getText()).toEqual(message); |
| }, |
| verifyMessagesAreDisplayed: function(message, message2){ |
| expect($("td-message .td-message-label").getText()).toEqual(message); |
| expect($("td-message .td-message-sublabel").getText()).toEqual(message2); |
| }, |
| verifyNumberForTellerIs: function(tellerNumber) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Number"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === tellerNumber; |
| })).toBe(true); |
| }, |
| verifyCashWithdrawalLimitIs: function(limit) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Cash withdrawal limit"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === limit; |
| })).toBe(true); |
| }, |
| verifyTellerAccountIs: function(account) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Teller account"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === account; |
| })).toBe(true); |
| }, |
| verifyVaultAccountIs: function(account) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Vault account"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === account; |
| })).toBe(true); |
| }, |
| verifyChequesReceivableAccountIs: function(account) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Cheques receivable account"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === account; |
| })).toBe(true); |
| }, |
| verifyCashOverShortAccountIs: function(account) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Cash over short account"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === account; |
| })).toBe(true); |
| }, |
| verifyDenominationRequiredIs: function(expText) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Denomination required?"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === expText; |
| })).toBe(true); |
| }, |
| verifyAssignedEmployeeForTellerIs: function(assignedEmployee) { |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Assigned employee"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text === assignedEmployee; |
| })).toBe(true); |
| }, |
| verifyCreatedByForTellerIs: 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); |
| }, |
| verifyLastModifiedByForTellerIs: function(modifiedBy){ |
| 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(modifiedBy) >= 0; |
| })).toBe(true); |
| }, |
| verifyLastOpenedByForTellerIs: function(openedBy){ |
| expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) { |
| return elem.$("h3").getText().then(function (text) { |
| return text === "Last opened by"; |
| }); |
| }).first().$("p").getText().then(function (text) { |
| return text.indexOf(openedBy) >= 0; |
| })).toBe(true); |
| }, |
| viewTellerBalanceForTellerInOffice: function(tellerIdentifier, officeIdentifier){ |
| link = "/offices/detail/" + officeIdentifier + "/tellers/detail/" + tellerIdentifier + "/balance"; |
| browser.wait(EC.visibilityOf($("a[href='"+link+"']")), 2000); |
| $("a[href='"+link+"']").click(); |
| browser.wait(EC.textToBePresentInElement($$("fims-layout-card-over .mat-toolbar-row span").get(1), "Teller balance"), 2000); |
| }, |
| goToDenominationsForTellerInOffice: function(tellerIdentifier, officeIdentifier){ |
| link = "/offices/detail/" + officeIdentifier + "/tellers/detail/" + tellerIdentifier + "/denominations"; |
| browser.wait(EC.visibilityOf($("a[href='"+link+"']")), 2000); |
| $("a[href='"+link+"']").click(); |
| browser.wait(EC.textToBePresentInElement($$("fims-layout-card-over .mat-toolbar-row span").get(1), "Manage denominations"), 2000); |
| }, |
| clickButtonCreateDenominationsForTellerInOffice: function(tellerIdentifier, officeIdentifier){ |
| link = "/offices/detail/" + officeIdentifier + "/tellers/detail/" + tellerIdentifier + "/denominations/create"; |
| browser.wait(EC.visibilityOf($("a[href='"+link+"']")), 2000); |
| $("a[href='"+link+"']").click(); |
| browser.wait(EC.textToBePresentInElement($$("fims-layout-card-over .mat-toolbar-row span").get(0), "Create new denomination"), 2000); |
| }, |
| verifyTellerTransactionMessageForRow: function(message, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| browser.wait(EC.textToBePresentInElement($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(1), message)); |
| }, |
| verifyTellerCashDisbursedAmountForRow: function(amount, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(3).getText()).toEqual(amount); |
| }, |
| verifyTellerCashReceivedAmountForRow: function(amount, row) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(2).getText()).toEqual(amount); |
| }, |
| verifyTotalCashOnHand: function(amount) { |
| browser.wait(EC.visibilityOf($("table tbody")), 3000); |
| expect($$("table tbody tr b").get(5).getText()).toEqual(amount); |
| }, |
| clickButtonCancel: function(){ |
| $$(".mat-button span").filter(function(elem, index){ |
| return elem.getText().then(function(text){ |
| return text == "CANCEL"; |
| }) |
| }).click(); |
| }, |
| verifyDeleteOfficeIconIsNotDisplayed: function(){ |
| expect($("button[title='Delete this office']").isPresent()).toBe(false); |
| } |
| } |