Untitled
unknown
plain_text
a year ago
13 kB
11
Indexable
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Interactions; using System; using System.Collections.Generic; using System.Linq; using System.Transactions; namespace MilleDeskTests.PageObjectPattern { public class LoanOtherDetails : BasePage { private IWebElement transactionDetails => Find(By.XPath("//*[text()='Szczegóły transakcji']/parent::div/parent::div/parent::div")); private IWebElement collateralDetails => Find(By.XPath("//*[text()='Szczegóły zabezpieczenia']/parent::div/parent::div/parent::div")); private IWebElement historyOfChanges => Find(By.XPath("//*[text()='Historia zmian']/parent::div/parent::div/parent::div")); private IWebElement setDetails => Find(By.XPath("//*[text()='Szczegóły zestawu']/parent::div/parent::div/parent::div")); private IWebElement transactionFilter => Find(By.XPath("//*[@class='loan-details-transaction-list-filters']//*[@class='Select__value-container']")); private IWebElement transactionDatePicker => Find(By.XPath("//*[@class='loan-details-transaction-list-filters']//*[contains(@class, 'DatePickerRangeContainer DatePickerRangeContainer')]")); private IWebElement collateralListFilter => Find(By.XPath("//*[text()='Lista zabezpieczeń']/parent::div/parent::div//*[@class='Select__value-container']")); private IWebElement changeTypeInput => Find(By.XPath("//*[@id='changeType']")); private IWebElement changesList => Find(By.XPath("//*[@class='loan-details-transaction-maintenance-list-filter']//*[@class='DatePickerRangeContainer DatePickerRangeContainer--vertical']")); private IWebElement printScheduleButton => Find(By.XPath("//*[@id='print-schedule-button']")); private IWebElement scheduleList => Find(By.XPath("//*[@id='schedule-list']")); private IWebElement printPaymentSlipsButton => Find(By.XPath("//*[@id='print-payment-slips-button']")); private IWebElement overduePaymentsCalender => Find(By.XPath("//*[@class='loan-details-past-due-payments']/parent::div//*[@class='DatePickerRangeContainer__value']")); private IWebElement statusFilter => Find(By.XPath("//*[@class='loan-details-memo-log-changes-filter']/*[contains(@class, 'Dropdown')]")); private IWebElement memoLogDatePicker => Find(By.XPath("//*[@class='loan-details-memo-log-changes-filter']/*[contains(@class, 'DatePicker')]")); private List<IWebElement> subHeaders => FindMany(By.XPath("//*[@id='rc-tabs-1-panel-1']//div[@class='ant-collapse-header']")); private List<IWebElement> loanScheduleHeaders => FindMany(By.XPath("//*[@class='loan-details-schedule-list']/div/div/p")); private List<IWebElement> transactionListLinks => FindMany(By.XPath("//*[contains(@id,'transaction-list') and contains(@id, 'Link')]")); private List<string> overduePaymentsHeaders => FindMany(By.XPath("//*[@class='loan-details-past-due-payments']/parent::div//*[contains(@class,'Typography Typography--dark Typography--normal Typography--bold Typography--sentence Typography--small')]")).Select(e => e.Text).ToList(); private List<string> loanScheduleDataLabels => FindMany(By.XPath("//*[@class='loan-details-schedule-list']//span")).Select(e => e.Text).ToList(); private List<string> overduePaymentsLabels => FindMany(By.XPath("//*[@class='loan-details-past-due-payments']/div//p/span")).Select(e => e.Text).ToList(); private List<CollateralListRows> collateralListRows => FindMany(By.XPath("//*[@id='collateral-list']//*[contains(@class,'ant-table-row ant-table-row-level-0')]")).Select(e => new CollateralListRows(e)).ToList(); private List<Alert> alerts => FindMany(By.XPath("//*[@id='rc-tabs-1-panel-1']//*[@role='alert']")).Select(e => new Alert(e)).ToList(); private DetailsModal transactionDetailsModal => new DetailsModal(transactionDetails); private DetailsModal collateralDetailsModal => new DetailsModal(collateralDetails); private DetailsModal historyOfChangesModal => new DetailsModal(historyOfChanges); private DetailsModal setDetailsModal => new DetailsModal(setDetails); private DatePicker overduePaymentsDatePicker => new DatePicker(overduePaymentsCalender); public LoanOtherDetails(IWebDriver driver, bool validation = true) : base(driver, validation) { } private void CheckTransactionLink() { foreach (var transaction in transactionListLinks) { Wait.Until(ExpectedConditions.PageLoaded); transaction.Click(); Wait.Until(ExpectedConditions.LoaderDisappears); Assert.Multiple(() => { Wait.Until((e) => { return transactionDetailsModal.Subheaders.Count > 0; }); Assert.That(transactionDetailsModal.Subheaders.Select(e => e.Text).ToList(), Is.EqualTo(new List<string> { "Dane podstawowe", "Dane finansowe", "Dane niefinansowe" })); Assert.That(transactionDetailsModal.SectionContentLabels.Select(e => e.Text).ToList(), Is.SupersetOf(new List<string> { "Typ", "Całkowita kwota transakcji", "Nowy kod/nazwa produktu" })); }); transactionDetailsModal.CloseModal(); } } private void CheckCollateralDescriptionLink() { foreach (var row in collateralListRows) { collateralListRows.First().Description.Click(); Wait.Timeout = TimeSpan.FromSeconds(30); Wait.Until(ExpectedConditions.LoaderDisappears); Assert.Multiple(() => { Wait.Until((e) => { return collateralDetailsModal.Subheaders.Count > 0; }); Assert.That(collateralDetailsModal.Subheaders.Select(e => e.Text).ToList(), Is.EqualTo(new List<string> { "Dane podstawowe", "Dane szczegółowe", "Szczegóły hipoteki", "Data wyceny" })); Assert.That(collateralDetailsModal.SectionContentLabels.Select(e => e.Text).ToList(), Is.SupersetOf(new List<string> { "Wykonane płatności razem", "Numer", "Wartość nominalna", "Data ustanowienia hipoteki", "Typ wyceny" })); }); CheckHistoryOfChanges(); CheckSetDetails(); collateralDetailsModal.CloseModal(); Wait.Until(ExpectedConditions.ElementToBeClickable(collateralListRows.First().Description)); } } private void CheckHistoryOfChanges() { collateralDetailsModal.Buttons.First(e => e.Text == "HISTORIA ZMIAN").Click(); Wait.Until(ExpectedConditions.LoaderDisappears); Assert.Multiple(() => { Wait.Until((e) => { return historyOfChangesModal.Subheaders.Count > 0; }); Assert.That(historyOfChangesModal.Subheaders.Select(e => e.Text).ToList(), Is.EqualTo(new List<string> { "Utworzenie/Zamknięcie", "Zmiany" })); Assert.That(historyOfChangesModal.DetailsRows.Count, Is.EqualTo(6)); }); historyOfChangesModal.ExpandRows(); historyOfChangesModal.CloseModal(); Wait.Until(ExpectedConditions.ElementToBeClickable(collateralDetailsModal.Buttons.First())); } private void CheckSetDetails() { Wait.Until(ExpectedConditions.ElementToBeClickable(collateralDetailsModal.Buttons.First())); collateralDetailsModal.Buttons.First(e => e.Text == "SZCZEGÓŁY ZESTAWU").Click(); Wait.Until(ExpectedConditions.LoaderDisappears); Wait.Until((e) => { return setDetailsModal.DetailsRows.Count > 0; }); Assert.That(setDetailsModal.DetailsRows.Count, Is.EqualTo(1)); setDetailsModal.CloseModal(); Wait.Until(ExpectedConditions.ElementToBeClickable(collateralDetailsModal.Buttons.First())); } private void AssertOtherDeatails() { Assert.Multiple(() => { Assert.That(transactionFilter.Displayed); Assert.That(transactionDatePicker.Displayed); Assert.That(collateralListFilter.Displayed); Assert.That(changeTypeInput.Displayed); Assert.That(changesList.Displayed); Assert.That(loanScheduleHeaders.First().Text, Is.EqualTo("Dane harmonogramu")); Assert.That(loanScheduleHeaders.Last().Text, Is.EqualTo("Harmonogram spłaty kredytu")); Assert.That(loanScheduleDataLabels, Is.SupersetOf(new List<string> { "Saldo bieżące", "Podstawa roczna naliczania" })); Assert.That(overduePaymentsLabels, Is.SupersetOf(new List<string> { "Płatności zaległe razem z odsetkami", "Zaległe odsetki karne" })); Assert.That(overduePaymentsCalender.Displayed); }); } public void AssertLoanOtherDetails() { ExpandAllSections(subHeaders); Wait.Until(ExpectedConditions.LoaderDisappears); AssertOtherDeatails(); Assert.Multiple(() => { Assert.That(collateralListRows.All(e => e.Status == "Aktywne")); Assert.That(collateralListRows.Count, Is.EqualTo(3)); Assert.That(printScheduleButton.Displayed); Assert.That(printPaymentSlipsButton.Displayed); Assert.That(overduePaymentsHeaders, Is.EqualTo(new List<string> { "Dane o przeterminowanych płatnościach", "Zaległe spłaty kredytu", "Lista zapłaconych i niezapłaconych należności przeterminowanych" })); }); } public void AssertMortgageOtherDetails() { ExpandAllSections(subHeaders); Wait.Until(ExpectedConditions.LoaderDisappears); AssertOtherDeatails(); Assert.That(subHeaders.Select(e => e.Text).ToList(), Is.EqualTo(new List<string> { "Transakcje", "Lista zabezpieczeń", "Lista zmian", "Harmonogram spłat kredytu", "Zaległe płatności", "Historia zmian memo – kredyty" })); new Actions(Driver).SendKeys(Keys.Home).Perform(); Wait.Until(ExpectedConditions.PageLoaded); CheckTransactionLink(); CheckCollateralDescriptionLink(); overduePaymentsDatePicker.ChooseEndDate(new DateTime(2024, 02, 29)); Assert.Multiple(() => { Assert.That(scheduleList.Displayed); Assert.That(statusFilter.Displayed); Assert.That(memoLogDatePicker.Displayed); Assert.That(alerts.FindAll(i => i.GetMessage() == "Brak rekordów.").Count, Is.EqualTo(3).Or.EqualTo(4)); }); } } public class CollateralListRows : BaseElement { public CollateralListRows(IWebElement element) : base(element) { } public string Status => Find(By.XPath("./*[1]")).Text; private string number => Find(By.XPath("./*[2]")).Text; private string relations => Find(By.XPath("./*[3]")).Text; private string loanAccount => Find(By.XPath("./*[4]")).Text; public IWebElement Description => Find(By.XPath("./*[5]")); private DateTime expirationDate => DateTime.Parse(Find(By.XPath("./*[6]")).Text); private Money amount => new Money(Find(By.XPath("./*[7]")).Text); } public class DetailsModal : BaseElement { private IWebElement closeButton => Find(By.XPath(".//span[@class='ant-modal-close-x']")); private List<IWebElement> expandIcons => FindMany(By.XPath(".//TD[contains(@class,'row-expand-icon')]")); private List<IWebElement> expandedRowsDetails => FindMany(By.XPath(".//*[contains(@class,'CustomExpandedRow')]")); public List<IWebElement> Buttons => FindMany(By.XPath(".//*[contains(@class,'Typography--button')]")); public List<IWebElement> Subheaders => FindMany(By.XPath(".//*[@class='ant-spin-container']/p")); public List<IWebElement> DetailsRows => FindMany(By.XPath(".//*[@class='ant-table-row ant-table-row-level-0']")); public List<IWebElement> SectionContentLabels => FindMany(By.XPath(".//*[@class='ant-spin-container']//*[@class='LabelWithParagraph']/p/span")); public DetailsModal(IWebElement element) : base(element) { } public void CloseModal() => closeButton.Click(); public void SelectHistoryOfChanges() => Buttons.First(e => e.Text == "Historia zmian").Click(); public void ExpandRows() { for (int i = 0; i < expandIcons.Count; i++) { expandIcons[i].Click(); Wait.Until(ExpectedConditions.PageLoaded); Assert.That(expandedRowsDetails[i].Displayed); } } } }
Editor is loading...
Leave a Comment