Esempio n. 1
0
def test_balance_sub_single():
    test_cases = [
        {
            "left": decimal.Decimal("0.01"),
            "right": decimal.Decimal("0.02"),
            "answer": decimal.Decimal("-0.01")
        },
        {
            "left": decimal.Decimal("-0.05"),
            "right": decimal.Decimal("-0.10"),
            "answer": decimal.Decimal("0.05"),
        },
        {
            "left": decimal.Decimal("0.05"),
            "right": decimal.Decimal("-0.10"),
            "answer": decimal.Decimal("0.15"),
        },
    ]

    for tc in test_cases:
        a = envelopes.Balance()
        a[UNITED_STATES] = tc["left"]
        b = envelopes.Balance()
        b[UNITED_STATES] = tc["right"]

        c = a - b
        assert tc["answer"] == c[UNITED_STATES]

        assert a[UNITED_STATES] == tc["left"]
        assert b[UNITED_STATES] == tc["right"]
Esempio n. 2
0
def test_balance_equal():
    ten_dollars = envelopes.Balance()
    ten_dollars[UNITED_STATES] = decimal.Decimal('10')

    five_dollars = envelopes.Balance()
    five_dollars[UNITED_STATES] = decimal.Decimal('5')

    ten_euro = envelopes.Balance()
    ten_euro[EUROPEAN_UNION] = decimal.Decimal('10')

    ten_euro_not_empty = envelopes.Balance()
    ten_euro_not_empty[EUROPEAN_UNION] = decimal.Decimal('10')
    ten_euro_not_empty[UNITED_STATES] = decimal.Decimal('0')

    ten_dollars_not_empty = envelopes.Balance()
    ten_dollars_not_empty[UNITED_STATES] = decimal.Decimal('10')
    ten_dollars_not_empty[EUROPEAN_UNION] = decimal.Decimal('0')

    test_cases = [
        {
            "left": ten_dollars,
            "right": ten_dollars,
            "answer": True,
        },
        {
            "left": ten_dollars,
            "right": five_dollars,
            "answer": False,
        },
        {
            "left": five_dollars,
            "right": ten_dollars,
            "answer": False,
        },
        {
            "left": ten_euro,
            "right": ten_dollars,
            "answer": False,
        },
        {
            "left": ten_euro_not_empty,
            "right": ten_euro,
            "answer": True,
        },
        {
            "left": ten_dollars_not_empty,
            "right": ten_dollars,
            "answer": True,
        },
    ]

    for tc in test_cases:
        got = tc["left"] == tc["right"]
        assert got == tc["answer"]
Esempio n. 3
0
def test_load_repo1():
    wanted_budget_base = envelopes.Balance()
    wanted_budget_base["USD"] = decimal.Decimal("0")
    wanted_budget_grocery = envelopes.Balance()
    wanted_budget_grocery["USD"] = decimal.Decimal("107.92")

    wanted_accounts = envelopes.Accounts()
    wanted_accounts["checking"] = decimal.Decimal("107.92")

    target_dir = pathlib.Path(__file__).parent.absolute()
    target_dir = os.path.join(target_dir.parent, "testdata", "repo1")

    subject = index.load_state(target_dir)

    assert subject.budget.balance == wanted_budget_base
    assert subject.budget.children["grocery"].balance == wanted_budget_grocery

    assert len(subject.accounts) == 1
    assert 'checking' in subject.accounts.keys()
    assert wanted_accounts == subject.accounts
Esempio n. 4
0
def test_load_repo2():
    wanted_budget_base = envelopes.Balance()
    wanted_budget_base["USD"] = decimal.Decimal("39621.38")

    wanted_accounts = envelopes.Accounts()
    wanted_accounts['usbank/checking'] = 492.89
    wanted_accounts['usbank/savings'] = 9071.33
    wanted_accounts['etrade/retirement'] = 30056.16

    target_dir = pathlib.Path(__file__).parent.absolute()
    target_dir = os.path.join(target_dir.parent, "testdata", "repo2")

    subject = index.load_state(target_dir)

    assert subject.budget.balance == wanted_budget_base
    assert len(subject.budget.children) == 0

    assert len(subject.accounts) == 3
    assert 'etrade/retirement' in subject.accounts.keys()
    assert 'us_bank/checking' in subject.accounts.keys()
    assert 'us_bank/savings' in subject.accounts.keys()
Esempio n. 5
0
def test_balance_add_multi():
    a = envelopes.Balance()
    a[UNITED_STATES] = decimal.Decimal("2.1")
    a[EUROPEAN_UNION] = decimal.Decimal("1.3")

    b = envelopes.Balance()
    b[UNITED_STATES] = decimal.Decimal("4.2")
    b[EUROPEAN_UNION] = decimal.Decimal("2.9")

    c = envelopes.Balance()
    c[UNITED_STATES] = decimal.Decimal("6.3")
    c[EUROPEAN_UNION] = decimal.Decimal("4.2")

    d = envelopes.Balance()
    d[UNITED_STATES] = decimal.Decimal("2.5")
    d[EUROPEAN_UNION] = decimal.Decimal("4.8")

    test_cases = [
        {
            "left": a,
            "right": b,
            "answer": c
        },
        {
            "left": envelopes.Balance(UNITED_STATES + " 2.5"),
            "right": envelopes.Balance(EUROPEAN_UNION + " 4.8"),
            "answer": d
        },
        {
            "left": envelopes.Balance(EUROPEAN_UNION + " 4.8"),
            "right": envelopes.Balance(UNITED_STATES + " 2.5"),
            "answer": d
        },
    ]

    for tc in test_cases:
        ans = tc["left"] + tc["right"]
        assert tc["answer"] == ans
Esempio n. 6
0
def test_parse_balance():
    forty_two_dollars = envelopes.Balance()
    forty_two_dollars[UNITED_STATES] = decimal.Decimal("42")

    zero_euro = envelopes.Balance()
    zero_euro[EUROPEAN_UNION] = decimal.Decimal("0")

    one_four_two_three_point_nine_one_dollars = envelopes.Balance()
    one_four_two_three_point_nine_one_dollars[UNITED_STATES] = decimal.Decimal(
        "1423.91")

    negative_ten_dollars = envelopes.Balance()
    negative_ten_dollars[UNITED_STATES] = decimal.Decimal("-10.00")

    two_cents = envelopes.Balance()
    two_cents[UNITED_STATES] = decimal.Decimal(".02")

    test_cases = [{
        "raw": "{} 42.00".format(UNITED_STATES),
        "expected": forty_two_dollars,
    }, {
        "raw": "{} 0".format(EUROPEAN_UNION),
        "expected": zero_euro,
    }, {
        "raw": "{} 1,423.91".format(UNITED_STATES),
        "expected": one_four_two_three_point_nine_one_dollars,
    }, {
        "raw": "{} -10.00".format(UNITED_STATES),
        "expected": negative_ten_dollars,
    }, {
        "raw": "{} .02".format(UNITED_STATES),
        "expected": two_cents,
    }]

    for tc in test_cases:
        subject = envelopes.Balance(tc["raw"])
        assert subject == tc["expected"]