def test_sorting_of_debts(dpp): debt_1 = debt.Debt("sorting of debts 1", 200, 20, 20) debt_2 = debt.Debt("sorting of debts 2", 300, 34, 30) debt_3 = debt.Debt("sorting of debts 3", 100, 10, 10) base_page = page.BasePage(dpp) main_page = base_page.open_main_page_as_guest() main_page.add_debt_parametrized(debt_1.debt_name, debt_1.starting_balance, debt_1.minimum_payment, debt_1.apr) main_page.add_debt_parametrized(debt_2.debt_name, debt_2.starting_balance, debt_2.minimum_payment, debt_2.apr) main_page.add_debt_parametrized(debt_3.debt_name, debt_3.starting_balance, debt_3.minimum_payment, debt_3.apr) main_page.set_payoff_order("APR high to low") main_page.check_step_details(0, debt_1.debt_name, debt_1.minimum_payment, (debt_1.number_of_payments - 2), 1) main_page.check_step_details(0, debt_2.debt_name, debt_2.minimum_payment, (debt_1.number_of_payments - 2), 0) main_page.check_step_details(0, debt_3.debt_name, debt_3.minimum_payment, (debt_1.number_of_payments - 2), 2) main_page.check_step_details(1, debt_1.debt_name, 20.60, 1, 1) main_page.check_step_details(1, debt_2.debt_name, 3.19, 1, 0) main_page.check_step_details(1, debt_3.debt_name, 4.86, 1, 2) debt_free = common.get_month_debt_free(11) debt_free_years_month = common.get_years_month_debt_free(debt_1.number_of_payments - 1) main_page.check_step_debt_paid_payoff_plan(0, debt_2.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(1, debt_1.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(2, debt_3.debt_name, debt_free, debt_free_years_month) main_page.set_payoff_order("Balance low to high") main_page.check_step_details(0, debt_1.debt_name, debt_1.minimum_payment, (debt_1.number_of_payments - 2), 1) main_page.check_step_details(0, debt_2.debt_name, debt_2.minimum_payment, (debt_1.number_of_payments - 2), 2) main_page.check_step_details(0, debt_3.debt_name, debt_3.minimum_payment, (debt_1.number_of_payments - 2), 0) main_page.check_step_details(1, debt_1.debt_name, 20.60, 1, 1) main_page.check_step_details(1, debt_2.debt_name, 3.19, 1, 2) main_page.check_step_details(1, debt_3.debt_name, 4.86, 1, 0) main_page.check_step_debt_paid_payoff_plan(2, debt_2.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(1, debt_1.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(0, debt_3.debt_name, debt_free, debt_free_years_month) main_page.set_payoff_order("As listed") main_page.check_step_details(0, debt_1.debt_name, debt_1.minimum_payment, (debt_1.number_of_payments - 2), 0) main_page.check_step_details(0, debt_2.debt_name, debt_2.minimum_payment, (debt_1.number_of_payments - 2), 1) main_page.check_step_details(0, debt_3.debt_name, debt_3.minimum_payment, (debt_1.number_of_payments - 2), 2) main_page.check_step_details(1, debt_1.debt_name, 20.60, 1, 0) main_page.check_step_details(1, debt_2.debt_name, 3.19, 1, 1) main_page.check_step_details(1, debt_3.debt_name, 4.86, 1, 2) main_page.check_step_debt_paid_payoff_plan(1, debt_2.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(0, debt_1.debt_name, debt_free, debt_free_years_month) main_page.check_step_debt_paid_payoff_plan(2, debt_3.debt_name, debt_free, debt_free_years_month)
def check_payoff(self, debt_1, debt_2): # Check first step of payment debt_1_payment = debt_1.minimum_payment debt_2_payment = debt_2.minimum_payment step_number = 0 if debt_1.remainder: step_number = 1 self.check_step_details(0, debt_1.debt_name, debt_1.minimum_payment, (debt_1.number_of_payments - 1)) self.check_step_details(0, debt_2.debt_name, debt_2.minimum_payment, (debt_1.number_of_payments - 1)) # Check the last step of the first payment debt_1_payment = debt_1.starting_balance - debt_1.minimum_payment * (debt_1.number_of_payments - 1) debt_2_payment = debt_2.minimum_payment + debt_1.minimum_payment - debt_1_payment self.check_step_details(1, debt_1.debt_name, debt_1_payment, 1) if debt_2.remainder: self.check_step_details(1, debt_2.debt_name, debt_2_payment, 1) else: self.check_step_details(0, debt_1.debt_name, debt_1_payment, debt_1.number_of_payments) self.check_step_details(0, debt_2.debt_name, debt_2_payment, debt_1.number_of_payments) self.check_step_debt_paid(0, debt_1) if debt_1.number_of_payments != debt_2.number_of_payments: # Check first step of the second debt after payoff of the first debt minimum_payment = debt_2.minimum_payment + debt_1.minimum_payment left_to_pay = debt_2.starting_balance - ( debt_2.minimum_payment * debt_1.number_of_payments + debt_1.minimum_payment - debt_1_payment ) left_duration = int(left_to_pay / minimum_payment) if left_to_pay <= minimum_payment: self.check_step_details(step_number + 1, debt_2.debt_name, left_to_pay, 1) if left_duration > 1: self.check_step_details(step_number + 1, debt_2.debt_name, minimum_payment, left_duration) last_payment = left_to_pay - minimum_payment * left_duration self.check_step_details(step_number + 2, debt_2.debt_name, last_payment, 1) debt_2.debt_free_on = common.add_months( common.get_datetime(), debt_1.number_of_payments + left_duration + 1 ).strftime("%b %Y") debt_2.debt_free_years_month = common.get_years_month_debt_free( debt_1.number_of_payments + left_duration + 1 ) self.check_step_debt_paid(1, debt_2)
def check_payoff_summary( self, current_balance, starting_balance, monthly_payment, first_month_interest, debt_free_on, number_of_payments, total_of_payments, total_interest, total_interest_percent, ): current_balance_actual = self.get_text(self.get_element(MainPageLocators.payoff_current_balance)).replace( "$", "" ) starting_balance_actual = self.get_text(self.get_element(MainPageLocators.starting_balance)).replace("$", "") monthly_payment_actual = self.get_text(self.get_element(MainPageLocators.monthly_payment)).replace("$", "") first_month_interest_actual = self.get_text(self.get_element(MainPageLocators.first_month_interest)).replace( "$", "" ) debt_free_on_actual = self.get_text(self.get_element(MainPageLocators.debt_free_on)) total_of_payments_actual = self.get_text(self.get_element(MainPageLocators.total_of_payments)).replace("$", "") total_interest_actual = self.get_text(self.get_element(MainPageLocators.total_interest)).replace("$", "") total_interest_percent_actual = ( self.get_text(self.get_element(MainPageLocators.total_interest_percent)) .replace("%", "") .replace("(", "") .replace(")", "") ) assert float(current_balance) == float(current_balance_actual) assert float(starting_balance) == float(starting_balance_actual) assert float(monthly_payment) == float(monthly_payment_actual) assert float(first_month_interest) == float(first_month_interest_actual) assert debt_free_on in debt_free_on_actual debt_free_on = common.get_years_month_debt_free(number_of_payments) assert debt_free_on in debt_free_on_actual assert float(total_of_payments) == float(total_of_payments_actual) assert float(total_interest) == float(total_interest_actual) assert float(total_interest_percent) == float(total_interest_percent_actual)
def __init__(self, debt_name, starting_balance, minimum_payment = None, apr = None, number_of_payments = None, category = None, payment_due_date = None, payoff_progress = None): self.debt_name = debt_name self.starting_balance = starting_balance self.minimum_payment = minimum_payment self.number_of_payments = number_of_payments self.apr = apr self.category = category self.payment_due_date = payment_due_date self.payoff_progress = apr self.remainder = False if minimum_payment == None and number_of_payments != None: self.minimum_payment = math.ceil(starting_balance / number_of_payments) if starting_balance % number_of_payments != 0: self.number_of_payments = int(number_of_payments + 1) self.remainder = True if number_of_payments == None and minimum_payment != None: self.number_of_payments = math.ceil(starting_balance / minimum_payment) if starting_balance % minimum_payment != 0: self.number_of_payments = int(self.number_of_payments + 1) self.remainder = True if apr == None: self.apr = 0 self.total_interest = 0 else: self.total_interest = common.get_total_interest(self.starting_balance, self.minimum_payment, self.number_of_payments, self.apr) self.number_of_payments = math.floor((self.starting_balance + self.total_interest) / self.minimum_payment) if (self.starting_balance + self.total_interest) % self.minimum_payment != 0: self.number_of_payments = int(self.number_of_payments + 1) self.remainder = True if payoff_progress == None: self.payoff_progress = 0 date = common.get_datetime() self.debt_free_on = common.add_months(date, self.number_of_payments).strftime('%b %Y') self.debt_free_years_month = common.get_years_month_debt_free(self.number_of_payments)