public void ATC6837d_CRMCancelBPayRequestBatchWithTopup() { #region Start Up Excel MyBook = MyApp.Workbooks.Open(DatasourceDir + @"\TenancyRequests.xlsx", 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); MySheet = (Excel.Worksheet)MyBook.Sheets[Properties.Settings.Default.ENVIRONMENT.ToString()]; MyRange = MySheet.UsedRange; /*Data preparation: Request batch is required with the following: - Several TRs (Type = Bond Lodgment) under it, including initial lodgement and at least one top-up (i.e. linked to existing Bond Number via {Tenancy} field, must have same managing party / contributors / tenancy address) - RB and TR all have {Payment Type} = BPay - RB has been successfully validated i.e. RB and TRs have {Status Reason} = Pending financials; are read only (bar bug 6343) - RB BPay reference is generated for total amount of all TRs*/ //Get specific row for the data int testDataRows = MyRange.Rows.Count; int tRow1 = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "Initial_6837") { tRow1 = i; break; } } #endregion string initialtenancyrequest = MyRange.Cells[tRow1, TenancyRequestSchema.GetColumnIndex("TR_NUMBER")].Value.ToString(); int tRow2 = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "Topup_6837") { tRow2 = i; break; } } string topuptenancyrequest = MyRange.Cells[tRow2, TenancyRequestSchema.GetColumnIndex("TR_NUMBER")].Value.ToString(); User user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRequestBatchRibbonButton(); RequestBatchesSearchPage requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.ClickNewRequestBatchButton(); RequestBatchPage requestBatchPage = new RequestBatchPage(driver); requestBatchPage.ClickPageTitle(); requestBatchPage.SetManagingPartyText(MyRange.Cells[tRow1, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString()); requestBatchPage.SetPaymentType(MyRange.Cells[tRow1, TenancyRequestSchema.GetColumnIndex("PAYMENT_TYPE")].Value.ToString()); requestBatchPage.ClickSaveButton(); string requestBatch = requestBatchPage.GetRequestNumber(); StringAssert.Contains(requestBatch, "TRB-BL-"); requestBatchPage.ClickAddAssociatedRequestsButton(); requestBatchPage.SetAssociatedRequest(initialtenancyrequest); requestBatchPage.ClickSaveCloseButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); Table reqBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); reqBatchTable.ClickCellValue("Name", requestBatch, "Name"); requestBatchPage = new RequestBatchPage(driver); requestBatchPage.ClickAddAssociatedRequestsButton(); requestBatchPage.SetAssociatedRequest(topuptenancyrequest); requestBatchPage.ClickSaveButton(); requestBatchPage.SetStatusReason("Ready for validation"); requestBatchPage.ClickSaveCloseButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); Assert.IsTrue(requestBatchSearchPage.GetPaymentRefernceRefreshTable(requestBatch)); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); Table requestBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); requestBatchTable.ClickCellValue("Name", requestBatch, "Name"); requestBatchPage = new RequestBatchPage(driver); requestBatchPage.ClickPageTitle(); Assert.AreEqual(requestBatchPage.GetSumBondamountPaid(), "$2,050.00"); requestBatchTable = new Table(requestBatchPage.GetPaymentSummaryResultTable()); StringAssert.Contains(requestBatchTable.GetCellValue("Request Batch", requestBatch, "Request Batch"), requestBatch,"Validate the payment ref record in req batch"); StringAssert.Contains(requestBatchTable.GetCellValue("Request Batch", requestBatch, "Payment Type"), "BPay","Validate the payment ref record in req batch"); StringAssert.Contains(requestBatchTable.GetCellValue("Request Batch", requestBatch, "Amount"), "$2,050.00","Validate the payment ref record in req batch"); StringAssert.Contains(requestBatchTable.GetCellValue("Request Batch", requestBatch, "Client"), MyRange.Cells[tRow1, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString(),"Validate the payment ref record in req batch"); string reqbatreferencenumber = requestBatchTable.GetCellValue("Request Batch", requestBatch, "Reference Number"); Thread.Sleep(5000); Assert.AreEqual(requestBatchPage.GetStatusReason(), "Pending Financials","Validate the status reason of req batch:"+requestBatch); Assert.AreEqual(requestBatchPage.GetFundedStatus(), "Payment pending","Validate the processing status of req batch:"+requestBatch); Assert.AreEqual(requestBatchPage.GetRecordStatus(), "Read only","Validate the record status of req bact:"+requestBatch); Table tenancyReqTable = new Table(requestBatchPage.GetTenancyRequestTable()); tenancyReqTable.ClickCellValue("Name", initialtenancyrequest, "Name"); TenancyRequestPage tenancyReqPage = new TenancyRequestPage(driver); tenancyReqPage.ClickPageTitle(); Assert.AreEqual(tenancyReqPage.GetStatusReason(), "Pending Financials", "Validating the status reason of TR" + initialtenancyrequest); Assert.AreEqual(tenancyReqPage.GetRecordStatus(), "Read only","Validating the record status of TR:"+initialtenancyrequest); homePage.HoverRBSRibbonTab(); homePage.ClickRequestBatchRibbonButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); reqBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); reqBatchTable.ClickCellValue("Name", requestBatch, "Name"); requestBatchPage = new RequestBatchPage(driver); tenancyReqTable = new Table(requestBatchPage.GetTenancyRequestTable()); tenancyReqTable.ClickCellValue("Name", topuptenancyrequest, "Name"); tenancyReqPage = new TenancyRequestPage(driver); tenancyReqPage.ClickPageTitle(); Assert.AreEqual(requestBatchPage.GetStatusReason(), "Pending Financials", "Validating the status reason of TR" + topuptenancyrequest); Assert.AreEqual(tenancyReqPage.GetRecordStatus(), "Read only","Validating the record status of TR"+topuptenancyrequest); //Double-click on the BPay Payment Reference record under the Administration section. homePage.HoverRBSRibbonTab(); homePage.ClickRequestBatchRibbonButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); reqBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); reqBatchTable.ClickCellValue("Name", requestBatch, "Name"); requestBatchPage = new RequestBatchPage(driver); requestBatchTable = new Table(requestBatchPage.GetPaymentSummaryResultTable()); IWebElement elem = requestBatchTable.GetCellElementContainsValue("Request Batch", requestBatch, "Reference Number"); UICommon.DoubleClickElement(elem, driver); //Click the [Deactivate] button.Record is deactivated. PaymentReferncePage payRefPage = new PaymentReferncePage(driver); payRefPage.ClickDeactivateButton(); WarningDialogueFramePage warnPage = new WarningDialogueFramePage(driver); warnPage.ClickProcessBeginButton(); Thread.Sleep(3000); payRefPage = new PaymentReferncePage(driver); payRefPage.ClickPageTitle(); Assert.AreEqual("Inactive", payRefPage.GetInactiveStatusFooter(),"Validate whether payment record of req batch:"+requestBatch+",is inactive after deactivating the record"); //Inspect Batch Request record. homePage.HoverRBSRibbonTab(); homePage.ClickRequestBatchRibbonButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); reqBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); reqBatchTable.ClickCellValue("Name", requestBatch, "Name"); /*Record is active again, editable. {Status Reason} = New. Processing Status is blank.*/ requestBatchPage = new RequestBatchPage(driver); requestBatchPage.ClickPageTitle(); Assert.AreEqual(requestBatchPage.GetStatusReason(), "New","Validating the status reason is New for req batch:"+requestBatch); Assert.AreEqual(requestBatchPage.GetFundedStatus(), "--","Validating the processing status is blank for req batch:"+requestBatch); try { requestBatchPage.SetPaymentType("BPay"); } catch (Exception) { new AssertFailedException("Payment Type in Req batch not editable after deactivating the payment ref record:" + requestBatch); } //Inspect all child Tenancy Request records. tenancyReqTable = new Table(requestBatchPage.GetTenancyRequestTable()); tenancyReqTable.ClickCellValue("Name", initialtenancyrequest, "Name"); /*Records are active again, editable. {Status Reason} = New. Processing Status is blank.*/ tenancyReqPage = new TenancyRequestPage(driver); StringAssert.Contains(tenancyReqPage.GetStatusReason(), "New", "Validating the status reason is New for TR" + initialtenancyrequest); StringAssert.Contains(tenancyReqPage.GetFundedStatus(), "","Validating the processing status is blank for TR"+initialtenancyrequest); try { tenancyReqPage.SetRequestTypeListValue("Bond Lodgement"); } catch (Exception) { new AssertFailedException("Request Type in Child Tenacy Req" + initialtenancyrequest + " not editable after deactivating the payment ref record in req batch:" + requestBatch); } homePage.HoverRBSRibbonTab(); homePage.ClickRequestBatchRibbonButton(); requestBatchSearchPage = new RequestBatchesSearchPage(driver); requestBatchSearchPage.SetRequestBatchSearchText(requestBatch); reqBatchTable = new Table(requestBatchSearchPage.GetSearchResultTable()); reqBatchTable.ClickCellValue("Name", requestBatch, "Name"); requestBatchPage = new RequestBatchPage(driver); tenancyReqTable = new Table(requestBatchPage.GetTenancyRequestTable()); tenancyReqTable.ClickCellValue("Name", topuptenancyrequest, "Name"); tenancyReqPage = new TenancyRequestPage(driver); StringAssert.Contains(tenancyReqPage.GetStatusReason(), "New", "Validating the status reason is New for TR:" + topuptenancyrequest); StringAssert.Contains(tenancyReqPage.GetFundedStatus(), "","Validating the processing status is blank for TR:" + topuptenancyrequest); try { tenancyReqPage.SetRequestTypeListValue("Bond Lodgement"); } catch (Exception) { new AssertFailedException("Request Type in Child Tenacy Req" + topuptenancyrequest + " not editable after deactivating the payment ref record in req batch:" + requestBatch); } }