Exemplo n.º 1
0
def test_account_report(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    acc3 = create_account(session)
    session.commit()

    session.add(create_transaction(acc1, acc2, 100.0, datetime(2010, 5, 22)))
    session.add(create_transaction(acc2, acc1, 200.0, datetime(2010, 5, 25)))
    session.add(create_transaction(acc3, acc2, 300.0, datetime(2010, 7, 1)))
    session.commit()

    result = list(acc1.report(datetime(2010, 5, 1), datetime(2010, 6, 1)))
    assert result[0][0] == datetime(2010, 5, 22)
    assert result[0][1].kredit == 100

    assert result[1][0] == datetime(2010, 5, 25)
    assert result[1][1].debet == 200
Exemplo n.º 2
0
def test_account_tree_and_billing_case(session):
    zacs = create_account(session)
    bich = create_account(session, u"Бичиков", zacs)
    petrov = create_account(session, u"Петров", zacs)

    kassa = create_account(session)
    nal = create_account(session, parent=kassa)
    beznal = create_account(session, parent=kassa)

    zp = create_account(session)
    konditer = create_account(session, parent=zp)
    zavhoz = create_account(session, parent=zp)
    session.commit()

    t = create_transaction(bich, nal, 1000.0)
    session.add(t)
    session.add(create_transaction(petrov, nal, 500.0))
    session.add(create_transaction(petrov, beznal, 100.0))

    session.add(create_transaction(nal, konditer, 300.0))
    session.add(create_transaction(nal, zavhoz, 200.0))
    session.commit()

    assert zacs.balance().balance == -1600
    assert bich.balance().balance == -1000
    assert petrov.balance().balance == -600

    assert kassa.balance().balance == 1100
    assert kassa.balance().debet == 1600
    assert kassa.balance().kredit == 500

    assert zp.balance().balance == 500

    t.amount = 900
    session.commit()

    assert zacs.balance().balance == -1500
    assert bich.balance().balance == -900
    assert petrov.balance().balance == -600

    assert kassa.balance().balance == 1000
    assert kassa.balance().debet == 1500
    assert kassa.balance().kredit == 500

    assert zp.balance().balance == 500
Exemplo n.º 3
0
def test_account_transaction_list(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    acc3 = create_account(session)
    session.commit()

    session.add(create_transaction(acc1, acc2, 100.0, datetime(2010, 5, 22, 10, 23, 40)))
    session.add(create_transaction(acc2, acc1, 200.0, datetime(2010, 6, 1, 10, 10, 10)))
    session.add(create_transaction(acc3, acc2, 300.0, datetime(2010, 7, 1, 10, 10, 10)))
    session.commit()

    result = acc2.transactions().all()
    assert result[0].amount == 100
    assert result[1].amount == 200
    assert result[2].amount == 300

    result = acc2.transactions(income=True).all()
    assert len(result) == 2
    assert result[0].amount == 100
    assert result[1].amount == 300

    result = acc2.transactions(outcome=True).all()
    assert len(result) == 1
    assert result[0].amount == 200

    result = acc1.transactions().all()
    assert len(result) == 2

    result = acc3.transactions().all()
    assert len(result) == 1

    result = acc1.transactions(datetime(2010, 5, 1), datetime(2010, 6, 1)).one()
    assert result.amount == 100
    assert result.date == datetime(2010, 5, 22, 10, 23, 40)

    try:
        result = acc1.transactions(datetime(2010, 5, 1), datetime(2010, 6, 1), income=True).one()
        assert False, 'NoResultFound must was thrown'
    except Account.NoResultFound: pass

    result = acc1.transactions(datetime(2010, 5, 1), datetime(2010, 6, 1), outcome=True).one()
    assert result.amount == 100

    result = acc1.transactions(datetime(2010, 6, 1), datetime(2010, 7, 1)).one()
    assert result.amount == 200
Exemplo n.º 4
0
def test_billing_must_return_values_for_date_period(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    session.commit()

    session.add(create_transaction(acc1, acc2, 200.0, datetime(2010, 5, 20)))
    session.add(create_transaction(acc1, acc2, 300.0, datetime(2010, 5, 31)))
    session.add(create_transaction(acc1, acc2, 100.0, datetime(2010, 6, 01)))
    session.commit()

    balance = acc2.balance(datetime(2010,5,1), datetime(2010,6,1))
    assert balance.balance == 500

    balance = acc1.balance(datetime(2010,6,1), datetime(2010,7,1))
    assert balance.balance == -100

    balance = acc2.balance(datetime(2010,5,1), datetime(2010,7,1))
    assert balance.balance == 600
Exemplo n.º 5
0
def test_billing_must_return_zero_balance_for_period_without_transactions(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    session.commit()

    session.add(create_transaction(acc1, acc2, 200.0, datetime(2010, 5, 20)))

    balance = acc2.balance(datetime(2010,5,21), datetime(2010,5,22))
    assert balance.balance == 0
Exemplo n.º 6
0
def test_month_report(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    acc3 = create_account(session)
    session.commit()

    session.add(create_transaction(acc1, acc2, 50.0, datetime(2009, 8, 22)))
    session.add(create_transaction(acc1, acc2, 100.0, datetime(2010, 5, 22)))
    session.add(create_transaction(acc2, acc1, 200.0, datetime(2010, 5, 25)))
    session.add(create_transaction(acc3, acc2, 300.0, datetime(2010, 7, 1)))

    result = month_report(session, (acc1.tid, acc2.tid), datetime(2010, 5, 22))
    assert len(result) == 2
    assert result[acc1.tid] == {'before':-50, 'debet':200, 'kredit':100, 'after':50}
    assert result[acc2.tid] == {'before':50, 'debet':100, 'kredit':200, 'after':-50}

    result = month_report(session, (acc1.tid, acc2.tid), datetime(2010, 7, 1))
    assert len(result) == 2
    assert result[acc1.tid] == {'before':50, 'debet':0, 'kredit':0, 'after':50}
    assert result[acc2.tid] == {'before':-50, 'debet':300, 'kredit':0, 'after':250}

    result = month_report(session, (acc3.tid,), datetime(2010, 7, 1))
    assert len(result) == 1
    assert result[acc3.tid] == {'before':0, 'debet':0, 'kredit':300, 'after':-300}
Exemplo n.º 7
0
def test_billing_support_transaction_removing(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    session.commit()

    t = create_transaction(acc1, acc2, 50.0)
    session.add(t)
    session.commit()

    assert acc1.balance().balance == -50
    assert acc2.balance().balance == 50

    session.delete(t)
    session.commit()
    assert acc1.balance().balance == 0
    assert acc2.balance().balance == 0
Exemplo n.º 8
0
def test_billing_support_transaction_cancellation(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    session.commit()

    t = create_transaction(acc1, acc2, 50.0)
    session.add(t)
    session.commit()

    assert acc1.balance().balance == -50
    assert acc2.balance().balance == 50

    t.cancel('Bad')
    session.commit()

    assert acc1.balance().balance == 0
    assert acc2.balance().balance == 0
Exemplo n.º 9
0
def test_transaction_list_must_include_all_destinations(session):
    acc1 = create_account(session)
    acc2 = create_account(session)
    acc3 = create_account(session, parent=acc2)
    session.commit()

    session.add(create_transaction(acc1, acc3, 100.0))
    session.commit()

    acc1_tid = acc1.tid
    acc2_tid = acc2.tid
    acc3_tid = acc3.tid
    session.expunge_all()

    result = transactions(session, acc3_tid).one()
    assert result.from_accs == [acc1_tid]
    assert result.to_accs == [acc2_tid, acc3_tid]

    result = transactions(session, acc3_tid, income=True).one()
    assert result.from_accs == [acc1_tid]
    assert result.to_accs == [acc2_tid, acc3_tid]