Example #1
0
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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)