Exemplo n.º 1
0
 def setUp(self):
     self.mocked_trading_pairs = ["BTC-USDT", "ETH-USDT"]
     self.order_book_data_source = OkexAPIOrderBookDataSource(
         self.mocked_trading_pairs)
 def test_example_market(self):
     ev_loop = asyncio.get_event_loop()
     # TODO this is currently executing the call, how to mock this?
     ev_loop.run_until_complete(OkexAPIOrderBookDataSource.get_active_exchange_markets())
Exemplo n.º 3
0
class TestOkexAPIOrderBookDataSource(unittest.TestCase):
    def setUp(self):
        self.mocked_trading_pairs = ["BTC-USDT", "ETH-USDT"]
        self.order_book_data_source = OkexAPIOrderBookDataSource(
            self.mocked_trading_pairs)

    def test_get_snapshot(self):
        ev_loop = asyncio.get_event_loop()
        # TODO this is currently executing the call, how to mock this?
        ev_loop.run_until_complete(self.get_snapshot())

    async def get_snapshot(self):
        async with aiohttp.ClientSession() as client:

            snapshot: Dict[
                str, Any] = await self.order_book_data_source.get_snapshot(
                    client, 'BTC-USDT')
            return snapshot

    async def listen_for_trades(self):
        q = asyncio.Queue()

        # mock to have only CELO
        async def mock_internal_get_trading_pairs():
            return ['BTC-USDT']

        self.order_book_data_source.internal_get_trading_pairs = mock_internal_get_trading_pairs

        task = asyncio.create_task(
            self.order_book_data_source.listen_for_trades(None, q))

        await asyncio.sleep(10)
        task.cancel()

        self.assertTrue(q.empty())

    def test_listen_for_trades(self):
        # WARNING: this test will fail if there are no trades in 10s in the BTC-USDT pair
        # q = asyncio.Queue()
        asyncio.get_event_loop().run_until_complete(self.listen_for_trades())

    async def listen_for_order_book_diffs(self):
        q = asyncio.Queue()

        # mock to have only CELO
        async def mock_internal_get_trading_pairs():
            return ['BTC-USDT']

        self.order_book_data_source.internal_get_trading_pairs = mock_internal_get_trading_pairs

        task = asyncio.create_task(
            self.order_book_data_source.listen_for_order_book_diffs(None, q))

        await asyncio.sleep(10)
        task.cancel()

        self.assertFalse(q.empty())

    def test_listen_for_order_book_diffs(self):
        # q = asyncio.Queue()
        asyncio.get_event_loop().run_until_complete(
            self.listen_for_order_book_diffs())

    def test_get_last_traded_prices(self):
        out = asyncio.get_event_loop().run_until_complete(
            self.order_book_data_source.get_last_traded_prices(trading_pairs))

        self.assertTrue('CELO-USDT' in out)
        self.assertTrue(type(out['CELO-USDT']) is float)
 def __init__(self, trading_pairs: Optional[List[str]] = None):
     super().__init__(OkexAPIOrderBookDataSource(trading_pairs),
                      trading_pairs)
     self._order_book_diff_stream: asyncio.Queue = asyncio.Queue()
     self._order_book_snapshot_stream: asyncio.Queue = asyncio.Queue()
     self._ev_loop: asyncio.BaseEventLoop = asyncio.get_event_loop()