Пример #1
0
def test_transaction_fetcher(client):
    with set_current_user():
        post = lambda json_data : client.post('/budgeto/transactions-fetcher', data={'transactions': json.dumps(json_data)})
        truncate = lambda data, max: (data[:max - 3] + '...') if len(data) > max - 3 else data

        def validate_transaction(resp_t, json_t):
            print(json_t)
            assert resp_t.description == truncate(json_t['desc'], 256)
            assert resp_t.amount == float(json_t['amount'].replace(',','.') or 0)
            assert resp_t.date.strftime("%d-%m-%Y") == json_t['date'] or datetime.today()
            assert resp_t.bank.name == json_t['bank']

        with open("tests/resources/test_transactions_limit_cases.txt", 'r') as file:
            json_data = json.loads(file.read())

        response = post(json_data)
        assert response.status_code == 200
        fetched_transactions = json.loads(response.data)['count']
        transactions = Transaction.get_latest(Transaction.transaction_id, fetched_transactions)
        assert fetched_transactions == 12  # @see test_transactions_limit_cases.txt

        response_dict = {"":0, "bank":0, "date":0, "amount":0, "desc":0}
        for i in range(fetched_transactions):
            t = json_data[i]
            # Normal transaction validation
            validate_transaction(transactions[fetched_transactions-i-1], t)
            # Counting the number of success fetch
            response_dict[t['test']] += 1

        # Assertion of working transactions
        assert response_dict[""] == 2
        assert response_dict["desc"] == 1
        assert response_dict["bank"] == 4
        assert response_dict["date"] == 2
        assert response_dict["amount"] == 3

        # Testing duplicate values with one new value
        new_data = [json_data[0]]
        working_transaction = {"desc":"Working transaction","date":"23-01-2017","amount":"100.0","bank":"Tangerine"}
        new_data.append(working_transaction)
        response = post(new_data)
        assert response.status_code == 200
        fetched_transactions = json.loads(response.data)['count']
        assert fetched_transactions == 1  # @see test_transactions_limit_cases.txt
        transaction = Transaction.get_latest(Transaction.transaction_id)
        validate_transaction(transaction, working_transaction)
Пример #2
0
def test_add_transaction(client):
    with set_current_user():
        data = {'desc': 'Test de transaction', 'amount': '10.55', 'date': date.today().strftime("%d-%m-%Y"),
                'bank': '2', 'cat': '2'}
        response = client.post('/budgeto/add-transaction', data=data)
        assert response.status_code == 201

        transaction = Transaction.get_latest(Transaction.upload_time)
        assert transaction.user == g.user
        assert transaction.bank_id == int(data['bank'])
        assert transaction.description == data['desc']
        assert transaction.category_id == int(data['cat'])
        assert transaction.amount == float(data['amount'])
        assert transaction.date.strftime("%d-%m-%Y") == data['date']
Пример #3
0
def test_put_transaction(client, statements):
    with set_current_user():
        for statement in statements:
            with codecs.open(statement['json'], 'r', encoding='utf8') as f:
                json_data = json.loads(f.read())
                added_transactions =  put_transactions(json_data, g.user)
                assert added_transactions == len(json_data['transactions'])

                transactions = Transaction.get_latest(Transaction.transaction_id, added_transactions)
                for i in range(0, added_transactions):
                    inverse = added_transactions - i - 1
                    assert transactions[i].description == json_data['transactions'][inverse]['description']
                    assert transactions[i].amount == json_data['transactions'][inverse]['amount']
                    assert str(transactions[i].date) == json_data['transactions'][inverse]['date']