def test__build_currency_graph_with_missing_ticker_data(self, currency_graph_mock): """ Test :meth:`ArbitrageStrategy._build_currency_graph` Assert `None` is returned when invalid ticker data is detected. """ arbitrage = ArbitrageStrategy() trader = MagicMock() TEST_PRODUCT = 'BTC-USD' trader.products = [TEST_PRODUCT] arbitrage.trader = trader ticker = { TEST_PRODUCT: { 'bid': 1.0, }, } arbitrage.ticker = ticker currency_graph = arbitrage._build_currency_graph() self.assertEqual(currency_graph, None)
def test__build_currency_graph_with_valid_ticker_data(self, currency_graph_mock): """ Test :meth:`ArbitrageStrategy._build_currency_graph` Assert currency pairs for every product are added to the graph and a non-`None` value is returned. """ arbitrage = ArbitrageStrategy() trader = MagicMock() TEST_PRODUCT = 'BTC-USD' trader.products = [TEST_PRODUCT] arbitrage.trader = trader ticker = { TEST_PRODUCT: { 'bid': 1.0, 'ask': 1.0, }, } arbitrage.ticker = ticker currency_graph = arbitrage._build_currency_graph() calls = [] for product in ticker: base = CurrencyGraph.get_base(product) quote = CurrencyGraph.get_quote(product) bid = ticker[product]['bid'] ask = ticker[product]['ask'] calls.append(call().add_currency_pair(base, quote, bid, ask)) currency_graph_mock.assert_has_calls(calls, any_order=True) self.assertNotEqual(currency_graph, None)