public void ATC4422_CRMTenancyRequestWithNoContributor() { #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; //Get specific row for the data int testDataRows = MyRange.Rows.Count; int MyRow = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "TR_TestData") { MyRow = i; break; } } #endregion string initialRequestParty = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_REQUEST_PARTY")].Value.ToString(); string initialContribution = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_CONTRIBUTION")].Value.ToString(); string rentalPremises = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("RENTAL_PREMISES")].Value.ToString(); //Login as RBS user User user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); //As a RBS Officer, navigate to an Address Detail HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaAddressDetailRibbonButton(); AddressDetailSearchPage addressDetailSearchPage = new AddressDetailSearchPage(driver); addressDetailSearchPage.SetAddressDetailSearchText("MITCHELTON"); Table addressSearchTable = new Table(addressDetailSearchPage.GetSearchResultTable()); addressSearchTable.ClickCellContainsValue("Name", rentalPremises, "Name"); AddressDetailPage addressDetailPage = new AddressDetailPage(driver); //Click on the Tenancy Requests Associated View in the dropdown ribbon menu homePage.HoverAddressDetailRibbonTab(rentalPremises); homePage.ClickTRAddressDetailViewRibbonButton(); addressDetailPage = new AddressDetailPage(driver); string BaseWindow = driver.CurrentWindowHandle; addressDetailPage.ClickAddNewTenancyRequestButton(); addressDetailPage.SwitchNewBrowser(driver, BaseWindow); //Fill in all mandatory details and Click Save&close TenancyRequestPage tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); //Set {Type} field to Bond Lodgement. tenancyRequestPage.SetRequestTypeListValue("Bond Lodgement"); tenancyRequestPage.PopulateTenancyRequestWithoutRentalPremisesFromAddressDetailAssociatedView( MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("REQUEST_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("NO_ROOMS")].Value.ToString(), initialRequestParty, MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("WEEKLY_RENT")].Value.ToString(), initialContribution, MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("AMOUNT_PAID_LODGEMENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("LODGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_START")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("ANTICIPATED_END")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("PAYMENT_TYPE")].Value.ToString()); tenancyRequestPage.SetDwellingTypeListValue(MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("DWELLING_TYPE")].Value.ToString()); tenancyRequestPage.ClickSaveButton(); string tenancyRequest = tenancyRequestPage.GetRequestNumber(); StringAssert.Contains(tenancyRequest, "TR-BL-", "Validating the Tenancy Request saved with the correct TR no fromat"); tenancyRequestPage.ClickSaveCloseButton(); driver = driver.SwitchTo().Window(BaseWindow); //Open the Tenancy Request which was just created addressDetailPage = new AddressDetailPage(driver); addressDetailPage.SetTenancyRequestSearchText(tenancyRequest); Table tenancyRequestSearchTable = new Table(addressDetailPage.GetTenancyRequestSearchResultTable()); tenancyRequestSearchTable.ClickCellContainsValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); Table requestPartyTable = new Table(tenancyRequestPage.GetRequestPartyTable()); //Confirm the tenancy request has only one contributor i.e initial Request Party Assert.AreEqual(requestPartyTable.GetCellContainsValue("Request Amount",initialContribution,"Client"), initialRequestParty); Assert.AreEqual(1, requestPartyTable.GetRowCount()-1,"Validating only one contributor is avaialble"); UICommon.DoubleClickElement(requestPartyTable.GetCellElementContainsValue("Client", initialRequestParty, "Client"), driver); Thread.Sleep(1000); TenancyRequestPartyPage tenancyRequestPartyPage = new TenancyRequestPartyPage(driver); tenancyRequestPartyPage.ClickPageTitle(); //Try to deactivate the contributor. Fails with an error dialog tenancyRequestPartyPage.ClickDeactivateButton(); WarningDialogueFramePage warningPage = new WarningDialogueFramePage(driver); warningPage.ClickProcessBeginButton(); tenancyRequestPartyPage.ClickSaveCloseButton(); //Go back to tenancy request form. The Delete button should not be available for RBS user tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); requestPartyTable = new Table(tenancyRequestPage.GetRequestPartyTable()); Assert.AreEqual(requestPartyTable.GetCellContainsValue("Request Amount", initialContribution, "Client"), initialRequestParty); Assert.AreEqual(1, requestPartyTable.GetRowCount() - 1, "Validating the initial contributor is still avaialble after trying to deactivate"); IWebElement element = requestPartyTable.GetCellElementContainsValue("Client", initialRequestParty, "Request Amount"); Assert.IsFalse(tenancyRequestPage.ClickDeleteButtonIfDisplayed(element),"Validating that delete button not displyed to click"); #region Shut down Excel MyBook.Save(); MyBook.Close(); MyApp.Quit(); #endregion }
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); } }
public void ATC6908_CRMUpdateTenancyRequestPaymentTypeExceptionQueue() { #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; //Get specific row for the data int testDataRows = MyRange.Rows.Count; int MyRow = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "TR_TestData") { MyRow = i; break; } } #endregion User user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Rental Bond Services > Tenancy Requests HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); //Create new Tenancy Request with fields populated except Payment type TenancyRequestsSearchPage tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.ClickNewTenancyRequestButton(); TenancyRequestPage tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.PopulateTenancyRequestWithoutPaymentType( MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("REQUEST_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("RENTAL_PREMISES")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("NO_ROOMS")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_REQUEST_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("WEEKLY_RENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_CONTRIBUTION")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("AMOUNT_PAID_LODGEMENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("LODGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_START")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("ANTICIPATED_END")].Value.ToString()); //Record should save successfully tenancyRequestPage.ClickSaveButton(); string tenancyRequest = tenancyRequestPage.GetRequestNumber(); StringAssert.Contains(tenancyRequest, "TR-BL-","Validating the Tenancy Request saved with the correct TR no fromat"); tenancyRequestPage.ClickSaveCloseButton(); //Open the record again and change the Status Reason to Ready for validation and save tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); Table table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); StringAssert.Contains(table.GetCellValue("Name", tenancyRequest, "Status Reason"), "New"); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.SetStatusReason("Ready for validation"); tenancyRequestPage.ClickSaveButton(); StringAssert.Contains(tenancyRequestPage.GetValidationStatusReason(), "Validation failed","Validation should fail when payment type is balnk"); //There should be one exception in the queue for Pyment type missing tenancyRequestPage.ClickQueueReasons(); Table queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Payment Type is blank", "Reason"), "Payment Type is blank"); //Open the exception queue and change the reason to resolved. In the tenancy record select a payment type and change the status reason to Ready for validation - SAVE UICommon.DoubleClickElement(queueTable.GetCellElementContainsValue("Reason", "Payment Type is blank", "Status Reason"), driver); TenancyRequestQueueReasonStatusPage tenancyQueueReasonStatusPage = new TenancyRequestQueueReasonStatusPage(driver); StringAssert.Contains(tenancyQueueReasonStatusPage.GetReasonValue(), "Payment Type is blank"); tenancyQueueReasonStatusPage.SetReasonValue("Resolved"); tenancyQueueReasonStatusPage.ClickSaveCloseButton(); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.SetPaymentType("BPay"); tenancyRequestPage.ClickSaveButton(); //Record should be saved and validation should be successful tenancyRequestPage.SetStatusReason("Ready for validation"); tenancyRequestPage.ClickSaveButton(); StringAssert.Contains(tenancyRequestPage.GetValidationStatusReason(), "Validation successful","Validation should be successful after adding payment type"); #region Shut down Excel MyBook.Save(); MyBook.Close(); MyApp.Quit(); #endregion }
public void ATC6907_CRMOverrideInvalidKeywordExceptionQueue() { #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; //Get specific row for the data int testDataRows = MyRange.Rows.Count; int MyRow = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "6907") { MyRow = i; break; } } #endregion User user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Rental Bond Services > Tenancy Requests HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); //Create new Tenancy Request. Fillup the Rental Premises with some address which has keyword like garage TenancyRequestsSearchPage tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.ClickNewTenancyRequestButton(); TenancyRequestPage tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.PopulateTenancyRequestValidationSuccessful( MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("REQUEST_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("RENTAL_PREMISES")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("NO_ROOMS")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_REQUEST_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("WEEKLY_RENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_CONTRIBUTION")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("AMOUNT_PAID_LODGEMENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("LODGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_START")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("ANTICIPATED_END")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("PAYMENT_TYPE")].Value.ToString()); tenancyRequestPage.SetDwellingTypeListValue("House"); tenancyRequestPage.ClickSaveButton(); string tenancyRequest = tenancyRequestPage.GetRequestNumber(); StringAssert.Contains(tenancyRequest, "TR-BL-", "Validating the Tenancy Request saved with the correct TR no fromat"); tenancyRequestPage.ClickSaveCloseButton(); //Reopen the record and change the status reason to Ready for Validation and save.The record should show an exception with Invalid Keyword tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); Table table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); StringAssert.Contains(table.GetCellValue("Name", tenancyRequest, "Status Reason"), "New"); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.SetStatusReason("Ready for validation"); tenancyRequestPage.ClickSaveButton(); StringAssert.Contains(tenancyRequestPage.GetValidationStatusReason(), "Validation failed", "Validation should fail when invalid keyword entered in address details"); tenancyRequestPage.ClickQueueReasons(); Table queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Reason"), "Invalid keyword detected"); UICommon.DoubleClickElement(queueTable.GetCellElementContainsValue("Reason", "Invalid keyword detected", "Status Reason"),driver); TenancyRequestQueueReasonStatusPage tenancyQueueReasonStatusPage = new TenancyRequestQueueReasonStatusPage(driver); Assert.IsFalse(tenancyQueueReasonStatusPage.GetOverrideCheckBoxValue(),"Validating the override checkbox for Invalid keyword queue reason is available for RBS officer"); //Login with any other user other than RBS operation user and see the override can be done by that user driver.Close(); driver = null; this.TestSetup(); user = this.environment.GetUser(SecurityRole.GeneralStaff); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Rental Bond Services > Tenancy Requests homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickQueueReasons(); queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Reason"), "Invalid keyword detected"); //Open the exception queue and change the reason to resolved. In the tenancy record select a payment type and change the status reason to Ready for validation - SAVE UICommon.DoubleClickElement(queueTable.GetCellElementContainsValue("Reason", "Invalid keyword detected", "Status Reason"), driver); tenancyQueueReasonStatusPage = new TenancyRequestQueueReasonStatusPage(driver); tenancyQueueReasonStatusPage.SetOverrideCheckBox(true); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); StringAssert.Contains(tenancyRequestPage.GetAlertMessage(), "Your changes have not been saved"); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); //Create new Tenancy Request with fields populated except Payment type tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickQueueReasons(); queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Override"), "No"); //Once override is done for that tenancy record for Invalid Keyword exception, it should appear as resolved in the queue in subsequent validations. //Validation should be successful driver.Close(); driver = null; this.TestSetup(); user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Rental Bond Services > Tenancy Requests homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickQueueReasons(); queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Reason"), "Invalid keyword detected"); UICommon.DoubleClickElement(queueTable.GetCellElementContainsValue("Reason", "Invalid keyword detected", "Status Reason"), driver); tenancyQueueReasonStatusPage = new TenancyRequestQueueReasonStatusPage(driver); tenancyQueueReasonStatusPage.SetOverrideCheckBox(true); tenancyQueueReasonStatusPage.ClickSaveCloseButton(); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickQueueReasons(); queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Override"), "Yes"); tenancyRequestPage.SetStatusReason("Ready for validation"); tenancyRequestPage.ClickSaveButton(); StringAssert.Contains(tenancyRequestPage.GetValidationStatusReason(), "Validation successful"); queueTable = new Table(tenancyRequestPage.GetQueueReasonTable()); StringAssert.Contains(queueTable.GetCellContainsValue("Reason", "Invalid keyword detected", "Status Reason"), "Resolved"); #region Shut down Excel MyBook.Save(); MyBook.Close(); MyApp.Quit(); #endregion }
public void ATC6708_CRMDistributeAmountForContributors() { #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; //Get specific row for the data int testDataRows = MyRange.Rows.Count; int MyRow = 0; for (int i = 2; i <= testDataRows; i++) { if (MyRange.Cells[i, 1].Value.ToString() == "6708") { MyRow = i; break; } } #endregion string secondContributor = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MISC1")].Value.ToString(); string thridContributor = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MISC2")].Value.ToString(); //Login as RBS Operations Standard user role. User user = this.environment.GetUser(SecurityRole.RBSOfficer); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Rental Bond Services > Tenancy Requests HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); //Create new Tenancy Request with mandatory fields populated TenancyRequestsSearchPage tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.ClickNewTenancyRequestButton(); TenancyRequestPage tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); string initialRequestParty = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_REQUEST_PARTY")].Value.ToString(); string initialContribution = MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("INITIAL_CONTRIBUTION")].Value.ToString(); tenancyRequestPage.PopulateMandatoryFieldValues( MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("REQUEST_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("RENTAL_PREMISES")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGING_PARTY")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("MANAGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("NO_ROOMS")].Value.ToString(), initialRequestParty, MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("WEEKLY_RENT")].Value.ToString(), initialContribution, MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("AMOUNT_PAID_LODGEMENT")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("LODGEMENT_TYPE")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("TENANCY_START")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("ANTICIPATED_END")].Value.ToString(), MyRange.Cells[MyRow, TenancyRequestSchema.GetColumnIndex("PAYMENT_TYPE")].Value.ToString()); //Save Tenancy Record tenancyRequestPage.ClickSaveButton(); string tenancyRequest = tenancyRequestPage.GetRequestNumber(); //Inspect Screen for Warnings "Warning displays that {Amount Paid with Lodgement} field <> sum of contributors." string warningMessage = tenancyRequestPage.GetWarningMessage(); StringAssert.Contains(warningMessage, "Sum of Request does not equal the amount entered for Amount Paid with Lodgement","Validating the warning appears"); //Click the ribbon button Distribute and Save the record. Warnings should disappear string alertMessage = tenancyRequestPage.ClickDistributeButton(); StringAssert.Contains(alertMessage, "Distribution process has been initiated"); //TODO:This is an issue an extra save dialog pops up and clicking OK button on this. string saveMessage = tenancyRequestPage.GetAlertMessage(); StringAssert.Contains(saveMessage, "Your changes have not been saved"); warningMessage = tenancyRequestPage.GetWarningMessage(); Assert.AreEqual(warningMessage, "","Validating that warning message disappeared"); //Add another contributor and populate amount field with > $1. Save Record. Warning should appear. string BaseWindow = driver.CurrentWindowHandle; //Records the current window handle tenancyRequestPage.ClickAddNewRequestPartyImage(); Thread.Sleep(2000); driver = tenancyRequestPage.SwitchNewBrowser(driver, BaseWindow); TenancyRequestPartyPage tenancyRequestPartyPage = new TenancyRequestPartyPage(driver); tenancyRequestPartyPage.ClickPageTitle(); tenancyRequestPartyPage.SetClientNameValue(secondContributor); tenancyRequestPartyPage.SetAmountValue("100"); tenancyRequestPartyPage.ClickSaveCloseButton(); driver = driver.SwitchTo().Window(BaseWindow); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickSaveButton(); //TODO:Issue the waning does not appear without refreshing the record.This is a workaround. homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); Table table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); StringAssert.Contains(table.GetCellValue("Name", tenancyRequest, "Status Reason"), "New"); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); //Inspect warning appears warningMessage = tenancyRequestPage.GetWarningMessage(); StringAssert.Contains(warningMessage, "Sum of Request does not equal the amount entered for Amount Paid with Lodgement","Validating that the warning appears"); //Add another contributor and populate amount field with > $1. Save Record. Warning should appear. BaseWindow = driver.CurrentWindowHandle; //Records the current window handle tenancyRequestPage.ClickAddNewRequestPartyImage(); Thread.Sleep(2000); driver = tenancyRequestPage.SwitchNewBrowser(driver, BaseWindow); tenancyRequestPartyPage = new TenancyRequestPartyPage(driver); tenancyRequestPartyPage.ClickPageTitle(); tenancyRequestPartyPage.SetClientNameValue(thridContributor); tenancyRequestPartyPage.SetAmountValue("100"); tenancyRequestPartyPage.ClickSaveCloseButton(); driver = driver.SwitchTo().Window(BaseWindow); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickSaveButton(); //Inspect warning appears warningMessage = tenancyRequestPage.GetWarningMessage(); StringAssert.Contains(warningMessage, "Sum of Request does not equal the amount entered for Amount Paid with Lodgement","Validating that the warning appears"); //Click the ribbon button Distribute and Save the record. Warning should disappear. alertMessage = tenancyRequestPage.ClickDistributeButton(); StringAssert.Contains(alertMessage, "Distribution process has been initiated"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickSaveButton(); //Issue the waning does disappear not appear without refreshing the record.This is a workaround. homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); StringAssert.Contains(table.GetCellValue("Name", tenancyRequest, "Status Reason"), "New"); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); //Warning disappears warningMessage = tenancyRequestPage.GetWarningMessage(); Assert.AreEqual(warningMessage, "", "Validating that warning message disappeared"); //Modify amount paid with lodgemnt to $1500 and inspect warning appears tenancyRequestPage.SetAmountPaidWithLodgement("1500"); tenancyRequestPage.ClickSaveButton(); warningMessage = tenancyRequestPage.GetWarningMessage(); StringAssert.Contains(warningMessage, "Sum of Request does not equal the amount entered for Amount Paid with Lodgement","Validating that the warning appears"); //TODO:Modify Contibutor amount to be different but still adds up to amount. Inspect warning disappears Table requestPartyTable = new Table(tenancyRequestPage.GetRequestPartyTable()); StringAssert.Contains(requestPartyTable.GetCellContainsValue("Client", secondContributor, "Request Amount"), "400"); BaseWindow = driver.CurrentWindowHandle; UICommon.DoubleClickElement(requestPartyTable.GetCellElementContainsValue("Client", secondContributor, "Client"), driver); Thread.Sleep(1000); driver = tenancyRequestPage.SwitchNewBrowser(driver, BaseWindow); tenancyRequestPartyPage = new TenancyRequestPartyPage(driver); tenancyRequestPartyPage.ClickPageTitle(); tenancyRequestPartyPage.SetAmountValue("700"); tenancyRequestPage.ClickSaveCloseButton(); driver = driver.SwitchTo().Window(BaseWindow); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); tenancyRequestPage.ClickSaveButton(); //TODO.WArnings does not disappear without refreshing the record. This is a workaround. homePage.HoverCRMRibbonTab(); homePage.ClickRBSRibbonButton(); homePage.HoverRBSRibbonTab(); homePage.ClickRtaTenancyRequestRibbonButton(); tenancyRequestSearchPage = new TenancyRequestsSearchPage(driver); tenancyRequestSearchPage.SetTenancyRequestSearchText(tenancyRequest); table = new Table(tenancyRequestSearchPage.GetSearchResultTable()); StringAssert.Contains(table.GetCellValue("Name", tenancyRequest, "Status Reason"), "New"); table.ClickCellValue("Name", tenancyRequest, "Name"); tenancyRequestPage = new TenancyRequestPage(driver); tenancyRequestPage.ClickPageTitle(); //Warning disappears warningMessage = tenancyRequestPage.GetWarningMessage(); Assert.AreEqual(warningMessage, "", "Validating that warning message disappeared"); //Modify amount paid with lodgement to be $900 tenancyRequestPage.SetAmountPaidWithLodgement("900"); tenancyRequestPage.ClickSaveButton(); //Warning appears warningMessage = tenancyRequestPage.GetWarningMessage(); StringAssert.Contains(warningMessage, "Sum of Request does not equal the amount entered for Amount Paid with Lodgement","Validating that the warning appesrs"); //Click Distribute and save the record. Warning should disappear tenancyRequestPage.ClickDistributeButton(); tenancyRequestPage.ClickSaveButton(); warningMessage = tenancyRequestPage.GetWarningMessage(); Assert.AreEqual(warningMessage, "", "Validating that warning message disappeared"); #region Shut down Excel MyBook.Save(); MyBook.Close(); MyApp.Quit(); #endregion }
public void ATC4440_CRMClientPhoneDelete() { //Login as CRM default user. User user = this.environment.GetUser(SecurityRole.GeneralStaff); new LoginDialog().Login(user.Id, user.Password); /* Person Client is needed with following fields populated: - Personal Mobile - Personal Preferred Contact Number - Work Preferred Contact Number - Fax*/ string clientName = "CLIENT PHONEDEL" + UICommon.GetRandomString(3); HomePage homePage = new HomePage(driver); string HomeWindow = driver.CurrentWindowHandle; homePage.HoverCRMRibbonTab(); homePage.ClickClientServicesRibbonButton(); homePage.HoverClientServicesRibbonTab(); homePage.ClickClientsRibbonButton(); ClientsSearchPage clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.ClickNewClientButton(); ClientPage clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); Thread.Sleep(1000); clientPage.SetFamilyName(clientName); clientPage.ClickSaveButton(); //Navigate to client phone numbers driver = driver.SwitchTo().Window(HomeWindow); homePage.HoverClientXRibbonTab(clientName); homePage.ClickClientXPhoneNumbersRibbonButton(); //Add new phone numbers clientPage = new ClientPage(driver); string BaseWindow = driver.CurrentWindowHandle; clientPage.ClickAddNewClientPhoneImage(); //Enter payment reference details driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Client Phone Number"); //Assert availability list ClientPhoneNumberPage clientPhoneNumberPage = new ClientPhoneNumberPage(driver); //Create Fixed Line Number clientPhoneNumberPage.SetTypeListValue("Fixed Line"); clientPhoneNumberPage.SetAreaCodeValue("07"); clientPhoneNumberPage.SetPhoneNumberValue("11111111"); clientPhoneNumberPage.ClickSaveButton(); //Assert new phone number has saved string FixedLineNumber = clientPhoneNumberPage.GetPhoneNumber(); clientPhoneNumberPage.ClickNewButton(); clientPhoneNumberPage.ClickPageTitle(); clientPhoneNumberPage.SetClientNameList(clientName); clientPhoneNumberPage.SetTypeListValue("Mobile"); clientPhoneNumberPage.SetPhoneNumberValue("0422222222"); clientPhoneNumberPage.ClickSaveButton(); //Assert new phone number has saved string MobileNumber = clientPhoneNumberPage.GetPhoneNumber(); clientPhoneNumberPage.ClickNewButton(); clientPhoneNumberPage.ClickPageTitle(); clientPhoneNumberPage.SetClientNameList(clientName); clientPhoneNumberPage.SetTypeListValue("Fax"); clientPhoneNumberPage.SetAreaCodeValue("07"); clientPhoneNumberPage.SetPhoneNumberValue("33333333"); clientPhoneNumberPage.ClickSaveButton(); //Assert new phone number has saved string FaxNumber = clientPhoneNumberPage.GetPhoneNumber(); clientPhoneNumberPage.ClickNewButton(); clientPhoneNumberPage.ClickPageTitle(); clientPhoneNumberPage.SetClientNameList(clientName); clientPhoneNumberPage.SetTypeListValue("Pager"); clientPhoneNumberPage.SetAreaCodeValue("07"); clientPhoneNumberPage.SetPhoneNumberValue("44444444"); clientPhoneNumberPage.ClickSaveButton(); //Assert new phone number has saved string PagerNumber = clientPhoneNumberPage.GetPhoneNumber(); clientPhoneNumberPage.ClickSaveCloseButton(); clientPhoneNumberPage.ClickSaveCloseButton(); clientPhoneNumberPage.ClickSaveCloseButton(); clientPhoneNumberPage.ClickSaveCloseButton(); // Verify that Activities table is not showing any activity driver = driver.SwitchTo().Window(HomeWindow); homePage.ClickClientXRibbonTab(clientName); clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); Table table = new Table(UICommon.GetSearchResultTable(driver)); Assert.IsTrue(table.GetNoRecordsInTable(), "Client Phone Number Updation Activity Getting displayed !!!!!"); // Update the Personal Mobile, Personal Preferred Contact Number, Work Preferred Contact Number and Fax and save the record clientPage.SetMobileNumber(MobileNumber); clientPage.SetPersonalPreferredMobileNumber(FixedLineNumber); clientPage.SetWorkPreferredNumber(PagerNumber); clientPage.SetFaxNumber(FaxNumber); clientPage.ClickSaveButton(); string clientId = clientPage.GetClientID(); clientPage.ClickSaveCloseButton(); //Clients Services > Clients Double click on the prepared record clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.SetClientSearchText(clientId); table = new Table(clientsSearchPage.GetSearchResultTable()); table.ClickCellValue("RTA Client Id", clientId, "Full Name"); clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); Thread.Sleep(500); string date = DateTime.Today.ToString("d/MM/yyyy"); string time = DateTime.Now.ToString("h:mm tt"); /*Clear the following fields and save record: - Personal Mobile - Personal Preferred Contact Number - Work Preferred Contact Number - Fax*/ clientPage.ClearMobileNumber(); clientPage.ClickPageTitle(); clientPage.ClearPersonalPreferredMobileNumber(); clientPage.ClickPageTitle(); clientPage.ClearWorkPreferredNumber(); clientPage.ClickPageTitle(); clientPage.ClearFaxNumber(); clientPage.ClickSaveCloseButton(); clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.SetClientSearchText(clientId); table = new Table(clientsSearchPage.GetSearchResultTable()); table.ClickCellValue("RTA Client Id", clientId, "Full Name"); clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); //Inspect resultant entry in Activity sub grid. Table headerTable = new Table(clientPage.GetActivitiesHeaderTable()); headerTable.ClickTableColumnHeader("Actual End"); Thread.Sleep(2000); Table activitiesTable = new Table(clientPage.GetActivitiesTable()); Assert.IsTrue(activitiesTable.MatchingCellFound("Subject", "Client Profile Phone Number updated"), "Client Phone Number Updation Activity NOT displayed !!!!!"); activitiesTable.ClickCellValue("Subject", "Client Profile Phone Number updated", "Subject"); //Client Management Activity is created as a note to users that the phone numbers were changed (includes current value of each field and a note referring the user to audit history). ClientManagementActivityPage activityPage = new ClientManagementActivityPage(driver); activityPage.ClickPageTitle(); StringAssert.Contains(activityPage.GetDescription(), "Personal Mobile: [no value]"); StringAssert.Contains(activityPage.GetDescription(), "Personal Preferred Contact Number: [no value]"); StringAssert.Contains(activityPage.GetDescription(),"Work Preferred Contact Number: [no value]"); StringAssert.Contains(activityPage.GetDescription(), "Fax: [no value]"); StringAssert.Contains(activityPage.GetDescription(), "Note: the current values are displayed above. Refer to Audit History against the Client record for more information."); homePage.HoverCRMRibbonTab(); homePage.ClickClientServicesRibbonButton(); homePage.HoverClientServicesRibbonTab(); homePage.ClickClientsRibbonButton(); clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.SetPageFilterList("Active Clients"); clientsSearchPage.SetClientSearchText(clientId); Table clientTable = new Table(clientsSearchPage.GetSearchResultTable()); IWebElement clientCell = clientTable.GetCellElementContainsValue("RTA Client Id", clientId, "Full Name"); UICommon.DoubleClickElement(clientCell, driver); Thread.Sleep(5000); clientPage = new ClientPage(driver, "Clients Quick"); /*Select the [Audit History] option from the entity navigation menu in the global ribbon. *Inspect audit history relating to deletions made in this test*/ homePage.HoverClientRibbonTab(clientName); homePage.ClickClientXAuditRibbonButton(); clientPage = new ClientPage(driver, "Clients Quick"); Thread.Sleep(2000); /*Audit history shows: - What was deleted - Who deleted it - When it was deleted - What previous value was*/ Table auditTable = new Table(clientPage.GetAuditHistoryTable()); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Changed Field"), "Fax"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Changed Field"), "Mobile"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Changed Field"), "Personal Preferred Contact Number"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Changed Field"), "Work Preferred Contact Number"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Old Value"), "+61 7 3333 3333"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Old Value"), "+61 422 222 222"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Old Value"), "+61 7 3333 3333"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Old Value"), "+61 7 1111 1111"); StringAssert.Contains(auditTable.GetCellValue("Event", "Update", "Old Value"), "+61 7 4444 4444"); Assert.AreEqual(String.Empty, auditTable.GetCellValue("Event", "Update", "New Value").Trim()); Assert.AreEqual(user.Id.ToLower() + " user", auditTable.GetCellValue("Event", "Update", "Changed By").ToLower()); Assert.AreEqual(date + " " + time, auditTable.GetCellValue("Event", "Update", "Changed Date")); }
public void ATC4439_ClientAlertsValidation() { //Login in as role User user = this.environment.GetUser(SecurityRole.Investigations); new LoginDialog().Login(user.Id, user.Password); //Navigate to: Client Services group > Clients tile HomePage homePage = new HomePage(driver); homePage.HoverCRMRibbonTab(); homePage.ClickClientServicesRibbonButton(); homePage.HoverClientServicesRibbonTab(); homePage.ClickClientsRibbonButton(); //Double-click on a Organisation record. ClientsSearchPage clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.ClickNewClientButton(); ClientPage clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); clientPage.SetClientType("Organisation"); clientPage.SetOrganizationName("TC AlertValidation"); clientPage.ClickSaveButton(); string clientID = clientPage.GetClientID(); clientPage.ClickSaveCloseButton(); clientsSearchPage = new ClientsSearchPage(driver); clientsSearchPage.SetClientSearchText(clientID); Table table = new Table(clientsSearchPage.GetSearchResultTable()); table.ClickCellValue("RTA Client Id", clientID, "Full Name"); //Inspect Current Alerts section.Click [+] button. clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); string BaseWindow = driver.CurrentWindowHandle; clientPage.ClickAddAlertElement(); //Set {Alert Type} to 'Other'.{Other Alert} field becomes mandatory and is enabled. driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Alert"); AlertPage alertPage = new AlertPage(driver); alertPage.SetAlertTypeElement("Other"); Assert.IsTrue(alertPage.VerifyOtherAlertMandatoryFieldIconPresent()); //Enter free text into {Other Alert} field and {Description}. alertPage.SetOtherAlertText("Other Alert One"); alertPage.SetDesctiptionText("Description Text Test Value One"); //Saved.Displays as current alert.As per entered. alertPage.ClickSaveCloseIMG(); driver = driver.SwitchTo().Window(BaseWindow); clientPage = new ClientPage(driver); Table alertTable = new Table(clientPage.GetCurrentAlertsTable()); StringAssert.Contains(alertTable.GetCellValue("Other Alert", "Other Alert One", "Alert Type"),"Other","Validating whether other alert displayed in current alerts"); BaseWindow = driver.CurrentWindowHandle; //Create another Alert:Set {Start date}.Set {End date} to today.Save record. clientPage.ClickAddAlertElement(); Thread.Sleep(5000); driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Alert"); alertPage = new AlertPage(driver); alertPage.SetAlertTypeElement("Other"); Assert.IsTrue(alertPage.VerifyOtherAlertMandatoryFieldIconPresent()); alertPage.SetOtherAlertText("Other Alert Two"); alertPage.SetDesctiptionText("Description Text Test Value Two"); alertPage.SetStartDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.SetEndDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.ClickSaveCloseIMG(); driver.SwitchTo().Window(BaseWindow); //Saved.Displays as current alert.As per entered. clientPage = new ClientPage(driver); alertTable = new Table(clientPage.GetCurrentAlertsTable()); StringAssert.Contains(alertTable.GetCellValue("Other Alert", "Other Alert Two", "Alert Type"), "Other", "Validating whether other alert displayed in current alerts"); //Modify record:Set {End date} to yesterday.Save record. IWebElement alertElement = alertTable.GetCellElementContainsValue("Other Alert", "Other Alert Two", "Other Alert"); UICommon.DoubleClickElement(alertElement, driver); alertPage = new AlertPage(driver); alertPage.SetStartDateValue(DateTime.Now.AddDays(-1).ToString("dd/MM/yyyy")); alertPage.SetEndDateValue(DateTime.Now.AddDays(-1).ToString("dd/MM/yyyy")); alertPage.ClickSaveCloseIMG(); //Saved.NOT displayed as current alert.As per entered. clientPage = new ClientPage(driver); alertTable = new Table(clientPage.GetCurrentAlertsTable()); Assert.IsFalse(alertTable.MatchingCellFound("Other Alert","Other Alert Two"), "Validating the alert with end date as yeterday not displayed in current alerts"); //Create more then four current Alerts. BaseWindow = driver.CurrentWindowHandle; clientPage.ClickAddAlertElement(); Thread.Sleep(3000); driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Alert"); alertPage = new AlertPage(driver); alertPage.SetAlertTypeElement("Other"); Assert.IsTrue(alertPage.VerifyOtherAlertMandatoryFieldIconPresent()); alertPage.SetOtherAlertText("Other Alert Two"); alertPage.SetDesctiptionText("Description Text Test Value Two"); alertPage.SetStartDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.SetEndDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.ClickSaveCloseIMG(); driver = driver.SwitchTo().Window(BaseWindow); clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); BaseWindow = driver.CurrentWindowHandle; clientPage.ClickAddAlertElement(); Thread.Sleep(3000); //Enter Alert details driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Alert"); alertPage = new AlertPage(driver); alertPage.SetAlertTypeElement("Other"); Assert.IsTrue(alertPage.VerifyOtherAlertMandatoryFieldIconPresent()); alertPage.SetOtherAlertText("Other Alert Three"); alertPage.SetDesctiptionText("Description Text Test Value Three"); alertPage.SetStartDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.SetEndDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.ClickSaveCloseIMG(); driver = driver.SwitchTo().Window(BaseWindow); clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); BaseWindow = driver.CurrentWindowHandle; clientPage.ClickAddAlertElement(); Thread.Sleep(3000); //Enter Alert details driver = UICommon.SwitchToNewBrowserWithTitle(driver, BaseWindow, "Alert"); alertPage = new AlertPage(driver); alertPage.SetAlertTypeElement("Other"); Assert.IsTrue(alertPage.VerifyOtherAlertMandatoryFieldIconPresent()); alertPage.SetOtherAlertText("Other Alert Four"); alertPage.SetDesctiptionText("Description Text Test Value Four"); alertPage.SetStartDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.SetEndDateValue(DateTime.Now.ToString("dd/MM/yyyy")); alertPage.ClickSaveCloseIMG(); driver = driver.SwitchTo().Window(BaseWindow); //Section is dynamic and allows for multi-page display. clientPage = new ClientPage(driver); clientPage.ClickPageTitle(); clientPage.ClickNextPageAlertTable(); alertTable = new Table(clientPage.GetCurrentAlertsTable()); Assert.IsTrue(alertTable.MatchingCellFound("Other Alert", "Other Alert Four"), "Validating the fourth alert displayed in the next page of alert table"); }