Exemplo n.º 1
0
def test_create_select(cur, user, tr_inner):
    invoice_usd = user.invoices.get(USD, None)
    invoice_eur = user.invoices.get(EUR, None)
    tr_inner2 = Transaction(invoice_usd.id, invoice_eur.id, invoice_usd.balance,
                            id=tr_inner.id,
                            uid=tr_inner.uid,
                            created_at=tr_inner.created_at,
                            updated_at=tr_inner.updated_at,
                            status=tr_inner.get_status()).create(cur)

    assert tr_inner.id == tr_inner2.id, "Bad id in transaction create"
    assert tr_inner.uid == tr_inner2.uid, "Bad uid in transaction create"
    assert tr_inner.invoice_id_from == tr_inner2.invoice_id_from, "Bad invoice_id_from in transaction create"
    assert tr_inner.invoice_id_to == tr_inner2.invoice_id_to, "Bad invoice_id_to in transaction create"
    assert tr_inner.created_at == tr_inner2.created_at, "Bad created_at in transaction create"
    assert tr_inner.updated_at == tr_inner2.updated_at, "Bad updated_at in transaction create"
    assert tr_inner.get_status() == tr_inner2.get_status() == IN_PROCESS, "Bad status in transaction create"
    cur.execute(f'''
            SELECT count(id) 
            FROM public.transaction
            WHERE uuid = '{tr_inner.uid}'::UUID OR uuid = '{tr_inner2.uid}'::UUID''')
    result = cur.fetchone()
    if result:
        count = result[0]
        assert count == 1, 'must be 1 transaction in bd'
    else:
        raise Exception('must be 1 transaction in bd')
Exemplo n.º 2
0
def test_run_external(cur, user, user2, tr_external):
    try:
        # fixed all data
        cur.connection.commit()
        tr_external.run()
        assert tr_external.get_status() == SUCCESS
        inv_from_new = Invoice.find_by_id(tr_external.invoice_id_from)
        inv_to_new = Invoice.find_by_id(tr_external.invoice_id_to)
        user_invoice_usd = user.invoices.get(USD, None)
        context = Context(prec=1, rounding=ROUND_DOWN)
        com = context.create_decimal_from_float(COMMISSION)

        assert inv_from_new.balance == (
            user_invoice_usd.balance - (tr_external.amount + tr_external.amount * com)).quantize(TWOPLACES)
        user_invoice_eur = user2.invoices.get(EUR, None)
        assert inv_to_new.balance == (user_invoice_eur.balance + tr_external.convert_amount(user_invoice_usd,
                                                                                            user_invoice_eur)).quantize(
            TWOPLACES)
    finally:
        with get_db_cursor(commit=True) as cur:
            cur.execute(f'''DELETE FROM public.transaction WHERE id={tr_external.id}::int;''')
            cur.execute(f'''DELETE FROM public.invoice WHERE user_id={user.id}::int;''')
            cur.execute(f'''DELETE FROM public.invoice WHERE user_id={user2.id}::int;''')
            cur.execute(f'''DELETE FROM public.user WHERE id={user.id}::int;''')
            cur.execute(f'''DELETE FROM public.user WHERE id={user2.id}::int;''')
Exemplo n.º 3
0
def user_fixed2():
    user_name = "new_user_fixed2_test"
    user = User(name=user_name, email="*****@*****.**", password="******").create()
    try:
        yield user
    finally:
        with get_db_cursor(commit=True) as cur:
            cur.execute(f'''DELETE FROM public.invoice WHERE user_id={user.id}::int;''')
            cur.execute(f'''DELETE FROM public.user WHERE id={user.id}::int;''')
Exemplo n.º 4
0
def test_create_insert(cur, tr_inner):
    cur.execute(f'''
        SELECT id, uuid, invoice_id_from, invoice_id_to, created_at, updated_at, amount, status 
        FROM public.transaction
        WHERE id = {tr_inner.id}''')
    id, uid, invoice_id_from, invoice_id_to, created_at, updated_at, amount, status = cur.fetchone()
    assert tr_inner.id == id, "Bad id in transaction create"
    assert tr_inner.uid == uid, "Bad uid in transaction create"
    assert tr_inner.invoice_id_from == invoice_id_from, "Bad invoice_id_from in transaction create"
    assert tr_inner.invoice_id_to == invoice_id_to, "Bad invoice_id_to in transaction create"
    assert tr_inner.created_at == created_at, "Bad created_at in transaction create"
    assert tr_inner.updated_at == updated_at, "Bad updated_at in transaction create"
    assert tr_inner.get_status() == status == IN_PROCESS, "Bad status in transaction create"
Exemplo n.º 5
0
def tr_list_completed(user_fixed, user_fixed2):
    tr_lst = []
    invoice_usd = user_fixed.invoices.get(USD, None)
    invoice_eur = user_fixed2.invoices.get(EUR, None)
    tr_lst.append(Transaction(invoice_usd.id, invoice_eur.id, invoice_usd.balance // 10).create().run())
    tr_lst.append(Transaction(invoice_usd.id, invoice_eur.id, invoice_usd.balance // 10).create().run())
    tr_bad = Transaction(invoice_usd.id, invoice_eur.id, invoice_usd.balance).create()
    try:
        tr_bad.run()
    except Exception as err:
        tr_lst.append(tr_bad)
        print("Badly transaction created: ", err)
    try:
        yield tr_lst
    finally:
        with get_db_cursor(commit=True) as cur:
            for tr in tr_lst:
                cur.execute(f'''DELETE FROM public.transaction WHERE id={tr.id}::int;''')
Exemplo n.º 6
0
def test_run_inner(cur, user, tr_inner):
    try:
        # fixed all data
        cur.connection.commit()
        tr_inner.run()
        assert tr_inner.get_status() == SUCCESS
        inv_from_new = Invoice.find_by_id(tr_inner.invoice_id_from)
        inv_to_new = Invoice.find_by_id(tr_inner.invoice_id_to)
        user_invoice_usd = user.invoices.get(USD, None)
        assert inv_from_new.balance == user_invoice_usd.balance - tr_inner.amount
        user_invoice_eur = user.invoices.get(EUR, None)
        assert inv_to_new.balance == user_invoice_eur.balance + tr_inner.convert_amount(user_invoice_usd,
                                                                                        user_invoice_eur)
    finally:
        with get_db_cursor(commit=True) as cur:
            cur.execute(f'''DELETE FROM public.transaction WHERE id={tr_inner.id}::int;''')
            cur.execute(f'''DELETE FROM public.invoice WHERE user_id={user.id}::int;''')
            cur.execute(f'''DELETE FROM public.user WHERE id={user.id}::int;''')