market = mock.Mock()
market.fetch_ticker.side_effect = [
{ "bid": 1, "ask": 3 },
- portfolio.ccxt.ExchangeError("foo"),
+ portfolio.ExchangeError("foo"),
{ "bid": 10, "ask": 40 },
- portfolio.ccxt.ExchangeError("foo"),
- portfolio.ccxt.ExchangeError("foo"),
+ portfolio.ExchangeError("foo"),
+ portfolio.ExchangeError("foo"),
]
ticker = portfolio.Trade.get_ticker("ETH", "ETC", market)
@unittest.skip("TODO")
def test_values_assertion(self):
- pass
+ value_from = Amount("BTC", "1.0")
+ value_from.linked_to = Amount("ETH", "10.0")
+ value_to = Amount("BTC", "1.0")
+ trade = portfolioTrade(value_from, value_to, "ETH")
+ self.assertEqual("BTC", trade.base_currency)
+ self.assertEqual("ETH", trade.currency)
+
+ with self.assertRaises(AssertionError):
+ portfolio.Trade(value_from, value_to, "ETC")
+ with self.assertRaises(AssertionError):
+ value_from.linked_to = None
+ portfolio.Trade(value_from, value_to, "ETH")
+ with self.assertRaises(AssertionError):
+ value_from.currency = "ETH"
+ portfolio.Trade(value_from, value_to, "ETH")
@unittest.skip("TODO")
def test_fetch_fees(self):
"ask": D("0.0012")
}
if symbol == "USDT/BTC":
- raise portfolio.ccxt.ExchangeError
+ raise portfolio.ExchangeError
if symbol == "BTC/USDT":
return {
"symbol": "BTC/USDT",
self.assertEqual(D("0.00003003"), all_orders[1].rate)
- def create_order(symbol, type, action, amount, price=None):
+ def create_order(symbol, type, action, amount, price=None, account="exchange"):
self.assertEqual("limit", type)
if symbol == "ETH/BTC":
- self.assertEqual("bid", action)
+ self.assertEqual("sell", action)
self.assertEqual(2, 3*amount)
self.assertEqual(D("0.14014"), price)
elif symbol == "XVG/BTC":
- self.assertEqual("bid", action)
+ self.assertEqual("sell", action)
self.assertEqual(1000, amount)
self.assertEqual(D("0.00003003"), price)
else:
self.assertEqual("sell", trades["XVG"].action)
# Action 6
- portfolio.Trade.prepare_orders(only="buy", compute_value=lambda x, y: x["ask"] * D("0.999"))
+ portfolio.Trade.prepare_orders(only="buy", compute_value=lambda x, y: x["ask"])
all_orders = portfolio.Trade.all_orders(state="pending")
self.assertEqual(3, len(all_orders))
- self.assertEqual(portfolio.Amount("ETC", D("15.4")), all_orders[0].amount)
- self.assertEqual(D("0.002997"), all_orders[0].rate)
- self.assertEqual("ask", all_orders[0].action)
- self.assertEqual(portfolio.Amount("BTD", D("9.7")), all_orders[1].amount)
- self.assertEqual(D("0.0011988"), all_orders[1].rate)
- self.assertEqual("ask", all_orders[1].action)
+ self.assertEqual(portfolio.Amount("ETC", D("38.5")/3), all_orders[0].amount)
+ self.assertEqual(D("0.003"), all_orders[0].rate)
+ self.assertEqual("buy", all_orders[0].action)
+
+ self.assertEqual(portfolio.Amount("BTD", D("24.25")/3), all_orders[1].amount)
+ self.assertEqual(D("0.0012"), all_orders[1].rate)
+ self.assertEqual("buy", all_orders[1].action)
+
self.assertEqual(portfolio.Amount("BTC", D("0.0097")), all_orders[2].amount)
- self.assertEqual(D("15984"), all_orders[2].rate)
- self.assertEqual("bid", all_orders[2].action)
+ self.assertEqual(D("16000"), all_orders[2].rate)
+ self.assertEqual("sell", all_orders[2].action)
with mock.patch.object(portfolio.time, "sleep") as sleep:
# Action 7