diff --git a/tests/exchange/__init.py b/tests/exchange/__init__.py similarity index 100% rename from tests/exchange/__init.py rename to tests/exchange/__init__.py diff --git a/tests/exchange/test_ccxt.py b/tests/exchange/test_ccxt.py index 7be111d1..7ef939b1 100644 --- a/tests/exchange/test_ccxt.py +++ b/tests/exchange/test_ccxt.py @@ -19,16 +19,16 @@ class TestCCXT(BaseExchangeTestCase): exchange_name=exchange_name, key=auth['key'], secret=auth['secret'], - base_currency='eth', + base_currency='bnb', ) self.exchange.init() def test_order(self): log.info('creating order') - asset = self.exchange.get_asset('neo_eth') + asset = self.exchange.get_asset('neo_bnb') order_id = self.exchange.order( asset=asset, - style=ExchangeLimitOrder(limit_price=0.7), + style=ExchangeLimitOrder(limit_price=10), amount=1, ) log.info('order created {}'.format(order_id)) diff --git a/tests/exchange/test_suites/__init__.py b/tests/exchange/test_suites/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/exchange/test_suite_bundle.py b/tests/exchange/test_suites/test_suite_bundle.py similarity index 100% rename from tests/exchange/test_suite_bundle.py rename to tests/exchange/test_suites/test_suite_bundle.py diff --git a/tests/exchange/test_suite_exchange.py b/tests/exchange/test_suites/test_suite_exchange.py similarity index 72% rename from tests/exchange/test_suite_exchange.py rename to tests/exchange/test_suites/test_suite_exchange.py index cf92845e..3eb3b38b 100644 --- a/tests/exchange/test_suite_exchange.py +++ b/tests/exchange/test_suites/test_suite_exchange.py @@ -1,21 +1,25 @@ import json import os import random -from logging import Logger +from logging import Logger, WARNING from time import sleep import pandas as pd +from catalyst.assets._assets import TradingPair +from logbook import TestHandler from catalyst.exchange.exchange_errors import ExchangeRequestError from catalyst.exchange.exchange_execution import ExchangeLimitOrder from catalyst.exchange.utils.exchange_utils import get_exchange_folder from catalyst.exchange.utils.test_utils import select_random_exchanges, \ handle_exchange_error, select_random_assets +from catalyst.testing import ZiplineTestCase +from catalyst.testing.fixtures import WithLogger log = Logger('TestSuiteExchange') -class TestSuiteExchange: +class TestSuiteExchange(WithLogger, ZiplineTestCase): def _test_markets_exchange(self, exchange, attempts=0): assets = None try: @@ -156,34 +160,47 @@ class TestSuiteExchange: base_currency=quote_currency, ) # Type: list[Exchange] - for exchange in exchanges: - exchange.init() + log_catcher = TestHandler() + with log_catcher: + for exchange in exchanges: + exchange.init() - assets = exchange.get_assets(quote_currency=quote_currency) - asset = select_random_assets(assets, 1)[0] - assert asset + assets = exchange.get_assets(quote_currency=quote_currency) + asset = select_random_assets(assets, 1)[0] + self.assertIsInstance(asset, TradingPair) - tickers = exchange.tickers([asset]) - price = tickers[asset]['last_price'] + tickers = exchange.tickers([asset]) + price = tickers[asset]['last_price'] - amount = order_amount / price + amount = order_amount / price - limit_price = price * 0.8 - style = ExchangeLimitOrder(limit_price=limit_price) + limit_price = price * 0.8 + style = ExchangeLimitOrder(limit_price=limit_price) - order = exchange.order( - asset=asset, - amount=amount, - style=style, - ) - sleep(1) + order = exchange.order( + asset=asset, + amount=amount, + style=style, + ) + sleep(1) - open_order, _ = exchange.get_order(order.id, asset) - assert open_order.status == 0 + open_order, _ = exchange.get_order(order.id, asset) + self.assertEqual(0, open_order.status) - exchange.cancel_order(open_order, asset) - sleep(1) + exchange.cancel_order(open_order, asset) + sleep(1) - canceled_order, _ = exchange.get_order(open_order.id, asset) - assert canceled_order.status == 2 + canceled_order, _ = exchange.get_order(open_order.id, asset) + warnings = [record for record in log_catcher.records if + record.level == WARNING] + + self.assertEqual(0, len(warnings)) + self.assertEqual(2, canceled_order.status) + print( + 'tested {exchange} / {symbol}, order: {order}'.format( + exchange=exchange.name, + symbol=asset.symbol, + order=order.id, + ) + ) pass