frappe/env/lib/python3.12/site-packages/tests/integration/test_investment_transactions.py

92 lines
3.5 KiB
Python

import time
from plaid.errors import ItemError
from tests.integration.util import (
create_client,
SANDBOX_INSTITUTION,
)
access_token = None
def setup_module(module):
client = create_client()
pt_response = client.Sandbox.public_token.create(
SANDBOX_INSTITUTION, ['investments'],
transactions__start_date='2018-01-01',
transactions__end_date='2019-01-01',
)
exchange_response = client.Item.public_token.exchange(
pt_response['public_token'])
global access_token
access_token = exchange_response['access_token']
def get_investment_transactions_with_retries(client,
access_token,
start_date,
end_date,
account_ids=None,
count=None,
offset=None,
num_retries=5):
response = None
for i in range(num_retries):
try:
response = \
client.InvestmentTransactions.get(access_token,
start_date,
end_date,
account_ids=account_ids,
count=count,
offset=offset)
except ItemError as ie:
if ie.code == u'PRODUCT_NOT_READY':
time.sleep(5)
continue
else:
raise ie
break
return response
def teardown_module(module):
client = create_client()
client.Item.remove(access_token)
def test_get():
client = create_client()
response = get_investment_transactions_with_retries(client,
access_token,
'2018-01-01',
'2019-01-01',
num_retries=5)
assert response['item'] is not None
assert response['accounts'] is not None
assert response['securities'] is not None
assert response['investment_transactions'] is not None
assert response['total_investment_transactions'] is not None
# get transactions for selected accounts
account_id = response['accounts'][0]['account_id']
response = \
get_investment_transactions_with_retries(client,
access_token,
'2018-06-01',
'2019-06-01',
account_ids=[account_id],
num_retries=5)
assert response['investment_transactions'] is not None
def test_get_with_options():
client = create_client()
response = get_investment_transactions_with_retries(client,
access_token,
'2018-06-01',
'2019-06-01',
count=2,
offset=1)
assert len(response['investment_transactions']) == 2