| //Prerequisites: |
| //Role "Administrator" and headquarter office already exist |
| //No tasks need to be executed in order to activate a customer |
| //ToDo: Figure out which roles best to use for which kind of actions instead of using employee with "Administrator" role |
| |
| var helper = require('../helper.js'); |
| var Login = require('../Pages/Login.js'); |
| var Employees = require('../Pages/Employees.js'); |
| var Common = require('../Pages/Common.js'); |
| var Offices = require('../Pages/Offices'); |
| var Teller = require('../Pages/Teller'); |
| var Customers = require('../Pages/Customers'); |
| var Deposits = require('../Pages/Deposits'); |
| var Accounting = require('../Pages/Accounting'); |
| var Cheques = require('../Pages/Cheques'); |
| |
| describe('cheque_management', function() { |
| var EC = protractor.ExpectedConditions; |
| employeeIdentifier = helper.getRandomString(6); |
| officeIdentifier = helper.getRandomString(6); |
| officeIdentifier2 = helper.getRandomString(12); |
| tellerIdentifier = helper.getRandomString(4); |
| customerAccount = helper.getRandomString(5); |
| customerAccount2 = helper.getRandomString(5); |
| depositIdentifier = helper.getRandomString(5); |
| depositName = helper.getRandomString(8); |
| tellerAccount = helper.getRandomString(4); |
| chequesReceivableAccount = helper.getRandomString(4); |
| revenueAccount = helper.getRandomString(4); |
| loanShortName = helper.getRandomString(6); |
| taskIdentifier = helper.getRandomString(3); |
| loanAccountShortName = helper.getRandomString(4); |
| branchSortCode = helper.getRandomString(11); |
| branchSortCode2 = helper.getRandomString(11); |
| |
| it('should create new accounts', function () { |
| Accounting.goToAccountingViaSidePanel(); |
| Common.clickLinkShowForRowWithId("7000"); |
| Common.clickLinkShowForRowWithId("7300"); |
| Accounting.clickCreateNewAccountInLedger("7300"); |
| Accounting.enterTextIntoAccountIdentifierInputField(tellerAccount); |
| Accounting.verifyRadioAssetToBeSelected(); |
| Accounting.verifyRadioAssetToBeDisabled(); |
| Accounting.enterTextIntoAccountNameInputField("My teller"); |
| Accounting.clickButtonCreateAccount(); |
| Common.verifyMessagePopupIsDisplayed("Account is going to be saved"); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("7200"); |
| Accounting.clickCreateNewAccountInLedger("7200"); |
| Accounting.enterTextIntoAccountIdentifierInputField(chequesReceivableAccount); |
| Accounting.verifyRadioAssetToBeSelected(); |
| Accounting.verifyRadioAssetToBeDisabled(); |
| Accounting.enterTextIntoAccountNameInputField("Cheques Receivable"); |
| Accounting.clickButtonCreateAccount(); |
| Common.verifyMessagePopupIsDisplayed("Account is going to be saved"); |
| Accounting.goToAccountingViaSidePanel(); |
| Common.clickLinkShowForRowWithId("1000"); |
| Common.clickLinkShowForRowWithId("1300"); |
| Accounting.clickCreateNewAccountInLedger("1300"); |
| Accounting.enterTextIntoAccountIdentifierInputField(revenueAccount); |
| Accounting.verifyRadioRevenueToBeSelected(); |
| Accounting.enterTextIntoAccountNameInputField("Revenue from deposit charges"); |
| Accounting.clickButtonCreateAccount(); |
| Common.verifyMessagePopupIsDisplayed("Account is going to be saved"); |
| }); |
| it('should create a new employee with administrator permissions', function () { |
| Employees.goToManageEmployeesViaSidePanel(); |
| Employees.createEmployee(employeeIdentifier, "Kate", "Atkinson", "Administrator", "abc123!!"); |
| Login.signOut(); |
| Login.logInForFirstTimeWithTenantUserAndPassword("playground", employeeIdentifier, "abc123!!", "abc123??"); |
| }); |
| it('should create a new branch office and a teller for the branch office', function () { |
| Offices.goToManageOfficesViaSidePanel(); |
| Offices.clickButtonCreateNewOffice(); |
| Common.verifyCardHasTitle("Create new office"); |
| Offices.enterTextIntoOfficeIdentifierInputField(officeIdentifier); |
| Offices.enterTextIntoOfficeNameInputField("Branch " + officeIdentifier); |
| Offices.clickEnabledContinueButtonForOfficeDetails(); |
| Offices.clickCreateOfficeButton(); |
| Common.verifyMessagePopupIsDisplayed("Office is going to be saved"); |
| Common.clickSearchButtonToMakeSearchInputFieldAppear(); |
| Common.enterTextInSearchInputFieldAndApplySearch(officeIdentifier); |
| Common.verifyFirstRowOfSearchResultHasTextAsId(officeIdentifier); |
| Common.clickLinkShowForFirstRowInTable(); |
| Offices.goToManageTellersForOfficeByIdentifier(officeIdentifier); |
| Offices.clickCreateTellerForOfficeByIdentifier(officeIdentifier); |
| Offices.enterTextIntoTellerNumberInputField(tellerIdentifier); |
| Offices.enterTextIntoPasswordInputField("qazwsx123!!"); |
| Offices.enterTextIntoCashWithdrawalLimitInputField("1000"); |
| Offices.enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry(tellerAccount); |
| Offices.enterTextIntoVaultAccountInputFieldAndSelectMatchingEntry("7351"); |
| Offices.enterTextIntoChequesReceivableAccountInputFieldAndSelectMatchingEntry(chequesReceivableAccount); |
| Offices.clickCreateTellerButton(); |
| Common.verifyMessagePopupIsDisplayed("Teller is going to be saved"); |
| //workaround for current bug that teller is not always listed immediately |
| Common.clickBackButtonInTitleBar(); |
| Offices.goToManageTellersForOfficeByIdentifier(officeIdentifier); |
| //Offices.verifyTellerStatusIs("CLOSED"); |
| Common.clickLinkShowForFirstRowInTable(); |
| }); |
| it('should open the teller and assign it to an employee', function () { |
| Offices.clickActionOpenForTellerOfOffice(tellerIdentifier, officeIdentifier); |
| Offices.enterTextIntoAssignedEmployeeInputField(employeeIdentifier); |
| Offices.selectOptionInListByName("Atkinson, Kate"); |
| Offices.clickEnabledOpenTellerButton(); |
| Common.verifyMessagePopupIsDisplayed("Teller is going to be updated"); |
| Offices.verifyTellerStatusIs("OPEN"); |
| }); |
| it('should create customer and activate customer', function () { |
| Customers.goToManageCustomersViaSidePanel(); |
| Common.verifyCardHasTitle("Manage members"); |
| Customers.clickButtonOrLinkCreateNewMember(); |
| Common.verifyCardHasTitle("Create new member"); |
| Customers.enterTextIntoAccountInputField(customerAccount); |
| Customers.enterTextIntoFirstNameInputField("Thomas"); |
| Customers.enterTextIntoLastNameInputField("Pynchon"); |
| Customers.enterTextIntoDayOfBirthInputField("9211978"); |
| Customers.verifyIsMemberCheckboxSelected(); |
| Customers.clickEnabledContinueButtonForMemberDetails(); |
| Customers.enterTextIntoStreetInputField("800 Chatham Road #326"); |
| Customers.enterTextIntoCityInputField("Winston-Salem"); |
| Customers.selectCountryByName("Germany"); |
| Customers.clickEnabledContinueButtonForMemberAddress(); |
| Customers.clickEnabledCreateMemberButton(); |
| Common.verifyMessagePopupIsDisplayed("Member is going to be saved") |
| Common.verifyCardHasTitle("Manage members"); |
| Common.clickSearchButtonToMakeSearchInputFieldAppear(); |
| Common.enterTextInSearchInputFieldAndApplySearch(customerAccount); |
| Common.verifyFirstRowOfSearchResultHasTextAsId(customerAccount); |
| Common.clickLinkShowForFirstRowInTable(); |
| Customers.verifyMemberHasStatusInactive(); |
| Customers.clickButtonGoToTasks(); |
| Customers.clickButtonActivate(); |
| Common.verifyMessagePopupIsDisplayed("Command is going to be executed"); |
| Customers.verifyMemberHasStatusActive(); |
| }); |
| it('should create a deposit product and enable the product', function () { |
| Deposits.goToDepositsViaSidePanel(); |
| Common.verifyCardHasTitle("Manage deposit products"); |
| Deposits.clickButtonCreateDepositAccount(); |
| Common.verifyCardHasTitle("Create new deposit product"); |
| Deposits.enterTextIntoShortNameInputField(depositIdentifier); |
| Deposits.verifyRadioCheckingIsSelected(); |
| Deposits.enterTextIntoNameInputField(depositName); |
| Deposits.enterTextIntoMinimumBalanceInputField("100"); |
| Deposits.verifyRadioAnnuallyIsSelected(); |
| Deposits.verifyCheckboxFlexibleInterestNotChecked(); |
| Deposits.enterTextIntoInterestInputField("3"); |
| Deposits.verifyFixedTermToggleSetToOff(); |
| Deposits.verifyTermPeriodInputFieldIsDisabled(); |
| Deposits.verifyRadioButtonsMonthAndYearDisabled(); |
| Deposits.toggleFixedTermToOn(); |
| Deposits.verifyTermPeriodInputFieldIsEnabled(); |
| Deposits.verifyRadioButtonsMonthAndYearEnabled(); |
| Deposits.selectRadioButtonYear(); |
| Deposits.enterTextIntoCashAccountInputField("7352"); |
| Deposits.enterTextIntoExpenseAccountInputField("2820"); |
| Deposits.enterTextIntoAccrueAccountInputField("8202"); |
| Deposits.enterTextIntoEquityLedgerInputField("9100"); |
| Deposits.enterTextIntoTermPeriodInputField("5"); |
| Deposits.selectRadioButtonYear(); |
| Deposits.clickEnabledContinueButtonForProductDetails(); |
| Deposits.clickEnabledCreateProductButton(); |
| Common.verifyMessagePopupIsDisplayed("Product is going to be saved"); |
| Common.verifyCardHasTitle("Manage deposit products"); |
| Common.clickLinkShowForRowWithId(depositIdentifier); |
| Deposits.verifyProductHasStatusDisabled(); |
| Deposits.clickButtonEnableProduct(); |
| Common.verifyMessagePopupIsDisplayed("Product is going to be updated"); |
| Deposits.verifyProductHasStatusEnabled(); |
| }); |
| it('should assign deposit product to the customer and open the account', function () { |
| Customers.goToManageCustomersViaSidePanel(); |
| Common.clickSearchButtonToMakeSearchInputFieldAppear(); |
| Common.enterTextInSearchInputFieldAndApplySearch(customerAccount); |
| Common.verifyFirstRowOfSearchResultHasTextAsId(customerAccount); |
| Common.clickLinkShowForRowWithId(customerAccount); |
| Customers.clickManageDepositAccountsForMember(customerAccount); |
| Customers.clickCreateDepositAccountForMember(customerAccount); |
| Customers.selectProduct(depositName); |
| Customers.clickEnabledButtonCreateDepositAccount(); |
| Common.verifyMessagePopupIsDisplayed("Deposit account is going to be saved"); |
| //might not be in list immediately always |
| Common.clickBackButtonInTitleBar(); |
| Customers.clickManageDepositAccountsForMember(customerAccount); |
| Common.clickLinkShowForRowWithId(depositIdentifier); |
| Customers.verifyDepositAccountHasStatus("PENDING"); |
| Customers.verifyDepositAccountBalanceIs("0.00"); |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoTellerNumberInputField(tellerIdentifier); |
| Teller.enterTextIntoPasswordInputField("qazwsx123!!"); |
| Teller.clickEnabledUnlockTellerButton(); |
| Common.verifyMessagePopupIsDisplayed("Teller drawer unlocked"); |
| Teller.enterTextIntoSearchInputField(customerAccount); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Thomas Pynchon"); |
| Teller.clickOnOpenAccountForCustomer(customerAccount); |
| Common.verifyCardHasTitle("Teller transaction"); |
| Teller.selectAccountToBeAffected(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Teller.enterTextIntoAmountInputField("500"); |
| Teller.clickEnabledCreateTransactionButton(); |
| Teller.verifyTransactionAmount("500"); |
| Teller.clickEnabledConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| }); |
| it('customer should be able to cash cheque - cheque is not open/not on us', function () { |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("123456"); |
| Cheques.enterTextIntoBranchSortCodeInputField(branchSortCode); |
| Cheques.enterTextIntoAccountNumberInputField("789789"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsDisplayedIfIssuingBankCouldNotBeDetermined(); |
| //Issuing Bank/Issuer show error |
| // Cheques.verifyIssuingBankHasError(); |
| // Cheques.verifyIssuerHasError(); |
| Cheques.enterTextIntoIssuingBankInputField("BoA"); |
| Cheques.enterTextIntoIssuerInputField("Paul Auster"); |
| Cheques.verifyPayeeHasTextAndCannotBeChanged("Thomas Pynchon"); |
| Cheques.enterTextIntoDateIssuedInputField("992017"); |
| Cheques.verifyWarningIsDisplayedIfChequeIsNotOpen(); |
| Cheques.enterTextIntoAmountInputField("5000"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyTransactionAmount("5000"); |
| Cheques.clickConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| }); |
| it('customer should be able to cash cheque - cheque is open/not on us', function () { |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("123456"); |
| Cheques.enterTextIntoBranchSortCodeInputField(branchSortCode2); |
| Cheques.enterTextIntoAccountNumberInputField("789789"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsDisplayedIfIssuingBankCouldNotBeDetermined(); |
| //Issuing Bank/Issuer show error |
| Cheques.enterTextIntoIssuingBankInputField("BoA"); |
| Cheques.enterTextIntoIssuerInputField("Paul Auster"); |
| Cheques.verifyPayeeHasTextAndCannotBeChanged("Thomas Pynchon"); |
| Cheques.enterTextIntoDateIssuedInputField("9122017"); |
| Cheques.checkCheckboxIsChequeOpen(); |
| Cheques.verifyWarningIsNotDisplayedIfChequeIsOpen(); |
| Cheques.enterTextIntoAmountInputField("300"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyTransactionAmount("300"); |
| Cheques.clickConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| }); |
| it('journal entries for transactions should be listed as expected', function () { |
| Accounting.goToAccountingViaSidePanel(); |
| Accounting.goToJournalEntries(); |
| Accounting.enterTextIntoSearchAccountInputField(customerAccount + ".9100.00001"); |
| Accounting.clickSearchButton(); |
| Accounting.verifyFirstJournalEntry("Account Opening", "Amount: 500.00"); |
| Accounting.verifySecondJournalEntry("Order Cheque", "Amount: 5,000.00"); |
| Accounting.verifyThirdJournalEntry("Open Cheque", "Amount: 300.00"); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("7000"); |
| Common.clickLinkShowForRowWithId("7200"); |
| Common.clickLinkShowForRowWithId(chequesReceivableAccount); |
| Accounting.viewAccountEntriesForAccount(chequesReceivableAccount); |
| Accounting.verifyTransactionTypeForRow("DEBIT", 1); |
| Accounting.verifyTransactionMessageForRow("ORCQ", 1); |
| Accounting.verifyTransactionAmountForRow("5000", 1); |
| Accounting.verifyTransactionBalanceForRow("5000", 1); |
| Accounting.verifyTransactionTypeForRow("DEBIT", 2); |
| Accounting.verifyTransactionMessageForRow("OPCQ", 2); |
| Accounting.verifyTransactionAmountForRow("300", 2); |
| Accounting.verifyTransactionBalanceForRow("5300", 2); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("9000"); |
| Common.clickLinkShowForRowWithId("9100"); |
| Common.clickLinkShowForRowWithId(customerAccount + ".9100.00001"); |
| Accounting.viewAccountEntriesForAccount(customerAccount + ".9100.00001"); |
| Accounting.verifyTransactionTypeForRow("CREDIT", 2); |
| Accounting.verifyTransactionMessageForRow("ORCQ", 2); |
| Accounting.verifyTransactionAmountForRow("5000", 2); |
| Accounting.verifyTransactionBalanceForRow("5500", 2); |
| Accounting.verifyTransactionTypeForRow("CREDIT", 3); |
| Accounting.verifyTransactionMessageForRow("OPCQ", 3); |
| Accounting.verifyTransactionAmountForRow("300", 3); |
| Accounting.verifyTransactionBalanceForRow("5800", 3); |
| }); |
| it('cheques should be pending clearance - approve first cheque/cancel second cheque', function () { |
| Accounting.goToAccountingViaSidePanel(); |
| Accounting.goToChequeClearing(); |
| Cheques.verifyStateForChequeWithIdentifier("PENDING", "123456~" + branchSortCode + "~789789"); |
| Cheques.verifyStateForChequeWithIdentifier("PENDING", "123456~" + branchSortCode2 + "~789789"); |
| Cheques.verifyDateIssuedForChequeWithIdentifier("9/9/2017", "123456~" + branchSortCode + "~789789"); |
| Cheques.verifyDateIssuedForChequeWithIdentifier("9/12/2017", "123456~" + branchSortCode + "~789789"); |
| Cheques.clickButtonApproveForChequeWithIdentifier("123456~" + branchSortCode + "~789789"); |
| Cheques.cancelAction(); |
| Cheques.clickButtonApproveForChequeWithIdentifier("123456~" + branchSortCode + "~789789"); |
| Cheques.confirmAction(); |
| Cheques.verifyStateForChequeWithIdentifier("PROCESSED", "123456~" + branchSortCode + "~789789"); |
| Cheques.clickButtonCancelForChequeWithIdentifier("123456~" + branchSortCode2 + "~789789"); |
| Cheques.confirmAction(); |
| Cheques.verifyStateForChequeWithIdentifier("CANCELED", "123456~" + branchSortCode2 + "~789789"); |
| }); |
| it('cheque should have been reverted as expected', function () { |
| Accounting.goToAccountingViaSidePanel(); |
| Accounting.goToJournalEntries(); |
| Accounting.enterTextIntoSearchAccountInputField(customerAccount + ".9100.00001"); |
| Accounting.clickSearchButton(); |
| Accounting.verifyFourthJournalEntry("Cheque Reversal", "Amount: 300.00"); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("7000"); |
| Common.clickLinkShowForRowWithId("7200"); |
| Common.clickLinkShowForRowWithId(chequesReceivableAccount); |
| Accounting.viewAccountEntriesForAccount(chequesReceivableAccount); |
| Accounting.verifyTransactionTypeForRow("CREDIT", 3); |
| Accounting.verifyTransactionMessageForRow("CQRV", 3); |
| Accounting.verifyTransactionAmountForRow("300", 3); |
| Accounting.verifyTransactionBalanceForRow("5000", 3); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("9000"); |
| Common.clickLinkShowForRowWithId("9100"); |
| Common.clickLinkShowForRowWithId(customerAccount + ".9100.00001"); |
| Accounting.viewAccountEntriesForAccount(customerAccount + ".9100.00001"); |
| Accounting.verifyTransactionTypeForRow("DEBIT", 4); |
| Accounting.verifyTransactionMessageForRow("CQRV", 4); |
| Accounting.verifyTransactionAmountForRow("300", 4); |
| Accounting.verifyTransactionBalanceForRow("5500", 4); |
| }); |
| it('should create another customer', function () { |
| Customers.goToManageCustomersViaSidePanel(); |
| Common.verifyCardHasTitle("Manage members"); |
| Customers.clickButtonOrLinkCreateNewMember(); |
| Common.verifyCardHasTitle("Create new member"); |
| Customers.enterTextIntoAccountInputField(customerAccount2); |
| Customers.enterTextIntoFirstNameInputField("Cormac"); |
| Customers.enterTextIntoLastNameInputField("McCarthy"); |
| Customers.enterTextIntoDayOfBirthInputField("7281958"); |
| Customers.verifyIsMemberCheckboxSelected(); |
| Customers.clickEnabledContinueButtonForMemberDetails(); |
| Customers.enterTextIntoStreetInputField("800 Chatham Road #326"); |
| Customers.enterTextIntoCityInputField("Winston-Salem"); |
| Customers.selectCountryByName("Germany"); |
| Customers.clickEnabledContinueButtonForMemberAddress(); |
| Customers.clickEnabledCreateMemberButton(); |
| Common.verifyMessagePopupIsDisplayed("Member is going to be saved") |
| Common.verifyCardHasTitle("Manage members"); |
| Common.clickSearchButtonToMakeSearchInputFieldAppear(); |
| Common.enterTextInSearchInputFieldAndApplySearch(customerAccount2); |
| Common.verifyFirstRowOfSearchResultHasTextAsId(customerAccount2); |
| }); |
| it('should activate the customer', function () { |
| Common.clickLinkShowForFirstRowInTable(); |
| Customers.verifyMemberHasStatusInactive(); |
| Customers.clickButtonGoToTasks(); |
| Customers.clickButtonActivate(); |
| Common.verifyMessagePopupIsDisplayed("Command is going to be executed"); |
| Customers.verifyMemberHasStatusActive(); |
| }); |
| it('should assign deposit product to customer and issue cheques to customer', function () { |
| Customers.clickManageDepositAccountsForMember(customerAccount2); |
| Customers.clickCreateDepositAccountForMember(customerAccount2); |
| Customers.selectProduct(depositName); |
| Customers.clickEnabledButtonCreateDepositAccount(); |
| Common.verifyMessagePopupIsDisplayed("Deposit account is going to be saved"); |
| //might not be in list immediately always |
| Common.clickBackButtonInTitleBar(); |
| Customers.clickManageDepositAccountsForMember(customerAccount2); |
| Common.clickLinkShowForRowWithId(depositIdentifier); |
| Customers.verifyDepositAccountHasStatus("PENDING"); |
| Customers.verifyDepositAccountBalanceIs("0.00"); |
| Cheques.clickButtonIssueCheques(); |
| Cheques.enterTextIntoAmountInputField("200"); |
| Cheques.clickIssueChequesButton(); |
| Common.verifyMessagePopupIsDisplayed("Cheques are going to be issued"); |
| }); |
| it('customer should not be able to cash cheque - insufficient balance on issuer account', function () { |
| //Or shouldn't he? Customer issuing the cheque has no money on his account; account isn't even open |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Thomas Pynchon"); |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("200"); |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.00001"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsNotDisplayedIfIssuingBankCouldBeDetermined(); |
| Cheques.verifyPayeeHasTextAndCannotBeChanged("Thomas Pynchon"); |
| Cheques.enterTextIntoDateIssuedInputField("992017"); |
| Cheques.verifyWarningIsDisplayedIfChequeIsNotOpen(); |
| Cheques.verifyIssuingBankHasText("Branch " + officeIdentifier); |
| Cheques.verifyIssuerHasText("Cormac McCarthy"); |
| Cheques.enterTextIntoAmountInputField("250.54"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Cheque not covered."); |
| Cheques.clickButtonOKInErrorMessage(); |
| //change branch sort code and verify transaction goes through as cheque not on us |
| Cheques.enterTextIntoBranchSortCodeInputField("Nina"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyTransactionAmount("250.54"); |
| Cheques.clickConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| }); |
| |
| it('customer should be able to cash cheque - cheque is not open/on us', function () { |
| //open customer's account with sufficient balance |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount2); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Cormac McCarthy"); |
| Teller.clickOnOpenAccountForCustomer(customerAccount2); |
| Common.verifyCardHasTitle("Teller transaction"); |
| Teller.selectAccountToBeAffected(customerAccount2 + ".9100.00001(" + depositIdentifier +")"); |
| Teller.enterTextIntoAmountInputField("5000"); |
| Teller.clickEnabledCreateTransactionButton(); |
| Teller.verifyTransactionAmount("5000"); |
| Teller.clickEnabledConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Thomas Pynchon"); |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("200"); |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.00001"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsNotDisplayedIfIssuingBankCouldBeDetermined(); |
| Cheques.verifyPayeeHasTextAndCannotBeChanged("Thomas Pynchon"); |
| Cheques.enterTextIntoDateIssuedInputField("992017"); |
| Cheques.verifyWarningIsDisplayedIfChequeIsNotOpen(); |
| Cheques.verifyIssuingBankHasText("Branch " + officeIdentifier); |
| Cheques.verifyIssuerHasText("Cormac McCarthy"); |
| Cheques.enterTextIntoAmountInputField("5000"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyTransactionAmount("5000"); |
| Cheques.clickConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| }); |
| it('customer should not be able to cash same cheque', function () { |
| //try and cash the same cheque again: determining from MICR should not be successful |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("200"); |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.00001"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsDisplayedIfIssuingBankCouldNotBeDetermined(); |
| Cheques.verifyPayeeHasTextAndCannotBeChanged("Thomas Pynchon"); |
| Cheques.enterTextIntoDateIssuedInputField("992017"); |
| Cheques.verifyWarningIsDisplayedIfChequeIsNotOpen(); |
| //Issuing Bank/Issuer have error |
| // Cheques.verifyIssuingBankHasError(); |
| // Cheques.verifyIssuerHasError(); |
| //Manually enter information and try to cash check anyways |
| Cheques.enterTextIntoIssuingBankInputField("Branch " + officeIdentifier); |
| Cheques.enterTextIntoIssuerInputField("Cormac McCarthy"); |
| Cheques.enterTextIntoAmountInputField("33"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Cheque 200~" + officeIdentifier + "~" + customerAccount2 + ".9100.00001 already used."); |
| Cheques.clickButtonOKInErrorMessage(); |
| //change cheque number to a number that has not yet been issued for the customer |
| Cheques.enterTextIntoChequeNumberInputField("201"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsDisplayedIfIssuingBankCouldNotBeDetermined(); |
| Cheques.verifyIssuingBankHasError(); |
| Cheques.verifyIssuerHasError(); |
| //change back to cheque number that has been issued for the customer and that has not yet been used |
| Cheques.enterTextIntoChequeNumberInputField("199"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsNotDisplayedIfIssuingBankCouldBeDetermined(); |
| Cheques.verifyIssuingBankHasText("Branch " + officeIdentifier); |
| Cheques.verifyIssuerHasText("Cormac McCarthy"); |
| }); |
| it('journal entries for the transaction should be listed as expected - cheque "on us"', function () { |
| Accounting.goToAccountingViaSidePanel(); |
| Accounting.goToJournalEntries(); |
| Accounting.enterTextIntoSearchAccountInputField(customerAccount2 + ".9100.00001"); |
| Accounting.clickSearchButton(); |
| Accounting.verifySecondJournalEntry("Order Cheque", "Amount: 5,000.00"); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId("9000"); |
| Common.clickLinkShowForRowWithId("9100"); |
| Common.clickLinkShowForRowWithId(customerAccount2 + ".9100.00001"); |
| Accounting.viewAccountEntriesForAccount(customerAccount2 + ".9100.00001"); |
| Common.clickFirstColumnHeaderInTableToResortTable(); |
| Accounting.verifyTransactionTypeForRow("DEBIT", 1); |
| Accounting.verifyTransactionMessageForRow("ORCQ", 1); |
| Accounting.verifyTransactionAmountForRow("5000", 1); |
| Accounting.verifyTransactionBalanceForRow("-5000", 1); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId(customerAccount + ".9100.00001"); |
| Accounting.viewAccountEntriesForAccount(customerAccount + ".9100.00001"); |
| Accounting.verifyTransactionTypeForRow("CREDIT", 6); |
| Accounting.verifyTransactionMessageForRow("ORCQ", 6); |
| Accounting.verifyTransactionAmountForRow("5000", 6); |
| Accounting.verifyTransactionBalanceForRow("10750.54", 5); |
| }); |
| it('customer should not be able to cash cheque if account is locked - cheque is on us', function () { |
| //lock second customer's account |
| Common.clickBackButtonInTitleBar(); |
| Common.clickBackButtonInTitleBar(); |
| Common.clickLinkShowForRowWithId(customerAccount2 + ".9100.00001"); |
| Accounting.goToTasksForAccount(customerAccount2 + ".9100.00001"); |
| Accounting.clickButtonToExecuteAction("LOCK"); |
| Common.verifyMessagePopupIsDisplayed("Command is going to be executed"); |
| Accounting.verifyAccountStatus("LOCKED"); |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Thomas Pynchon"); |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| Cheques.enterTextIntoChequeNumberInputField("11"); |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.00001"); |
| Cheques.clickButtonDetermineFromMICR(); |
| Cheques.verifyWarningIsNotDisplayedIfIssuingBankCouldBeDetermined(); |
| Cheques.enterTextIntoDateIssuedInputField("9152017"); |
| Cheques.verifyIssuingBankHasText("Branch " + officeIdentifier); |
| Cheques.verifyIssuerHasText("Cormac McCarthy"); |
| Cheques.enterTextIntoAmountInputField("400"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001(" + depositIdentifier +")"); |
| Cheques.clickCreateTransactionButton(); |
| //verify transaction cannot be created if account is not open |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Account " + customerAccount2 + ".9100.00001 is not open."); |
| Cheques.clickButtonOKInErrorMessage(); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.00005"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Account " + customerAccount2 + ".9100.00005 not found."); |
| Cheques.clickButtonOKInErrorMessage(); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount2 + ".9100.0000"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Account " + customerAccount2 + ".9100.0000 not found."); |
| Cheques.clickButtonOKInErrorMessage(); |
| //change branch sort code to a code that is not one of the office identifiers for the client and verify transaction goes through |
| Cheques.enterTextIntoBranchSortCodeInputField("boa"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyTransactionAmount("400"); |
| Cheques.clickConfirmTransactionButton(); |
| Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed"); |
| Accounting.goToAccountingViaSidePanel(); |
| Accounting.goToChequeClearing(); |
| Cheques.verifyStateForChequeWithIdentifier("PENDING", "11~boa~" + customerAccount2 + ".9100.00005"); |
| Common.clickBackButtonInTitleBar(); |
| Accounting.goToJournalEntries(); |
| Accounting.enterTextIntoSearchAccountInputField(chequesReceivableAccount); |
| Accounting.clickSearchButton(); |
| Accounting.verifyFifthJournalEntry("Order Cheque", "Amount: 400.00"); |
| }); |
| it('input should be validated and CREATE TRANSACTION button is only enabled with valid input', function () { |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount2); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Cormac McCarthy"); |
| //action to cash cheques is not yet visible for the customer because deposit account not active yet |
| Teller.verifyActionCashChequeNotDisplayedForCustomer(customerAccount2); |
| Teller.goToTellerManagementViaSidePanel(); |
| Teller.enterTextIntoSearchInputField(customerAccount); |
| Teller.clickButtonShowAtIndex(0); |
| Teller.verifyCardTitleHasNameOfCustomer("Thomas Pynchon"); |
| Teller.clickOnCashChequeForCustomer(customerAccount); |
| //Cheque number is not a number |
| Cheques.enterTextIntoChequeNumberInputField("c1"); |
| //Office identifier exceeds 11 characters |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier2); |
| Cheques.enterTextIntoAccountNumberInputField(customerAccount + ".9100.00001"); |
| Cheques.verifyButtonDetermineFromMICRDisabled(); |
| Cheques.verifyChequeNumberInputHasErrorIfInputNoNumber(); |
| Cheques.verifyBranchSortCodeInputHasErrorIfCharacterLimitExceeded(); |
| //Issuing bank has special chars |
| Cheques.enterTextIntoIssuingBankInputField("Unión de Crédito Español"); |
| Cheques.enterTextIntoIssuerInputField("Paul Auster"); |
| //Date should not be more than 6 months in the past |
| Cheques.enterTextIntoDateIssuedInputField("8111999"); |
| Cheques.enterTextIntoAmountInputField("26.78"); |
| Cheques.selectAccountToTransferTo(customerAccount + ".9100.00001"); |
| Cheques.verifyCreateTransactionButtonIsDisabled(); |
| Cheques.enterTextIntoChequeNumberInputField("01"); |
| Cheques.verifyCreateTransactionButtonIsDisabled(); |
| Cheques.enterTextIntoBranchSortCodeInputField(officeIdentifier); |
| Cheques.verifyButtonDetermineFromMICREnabled(); |
| Cheques.verifyCreateTransactionButtonIsEnabled(); |
| //amount is 0 or negative |
| Cheques.enterTextIntoAmountInputField("0"); |
| Cheques.verifyAmountInputHasErrorIfInput0OrNegative(); |
| Cheques.verifyCreateTransactionButtonIsDisabled(); |
| Cheques.enterTextIntoAmountInputField("0.02"); |
| Cheques.verifyCreateTransactionButtonIsEnabled(); |
| Cheques.enterTextIntoAmountInputField("-4"); |
| Cheques.verifyAmountInputHasErrorIfInput0OrNegative(); |
| Cheques.verifyCreateTransactionButtonIsDisabled(); |
| Cheques.enterTextIntoAmountInputField("100,000.99"); |
| Cheques.clickCreateTransactionButton(); |
| Cheques.verifyErrorMessageDisplayedWithTitleAndText("Invalid transaction", "Cheque is older than 6 months."); |
| Cheques.clickButtonOKInErrorMessage(); |
| //amount too high (bad request) |
| //special chars in branch sort field (bad request) |
| }); |
| }); |