]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - test.py
Add test for Trade
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / test.py
diff --git a/test.py b/test.py
index 25898961aa2f3729a6c205ce7a32ec764cbe784f..b7476175166721d25ab18c8e02dbfd404b4357d5 100644 (file)
--- a/test.py
+++ b/test.py
@@ -426,10 +426,10 @@ class TradeTest(unittest.TestCase):
         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)
@@ -489,7 +489,21 @@ class TradeTest(unittest.TestCase):
 
     @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):
@@ -606,7 +620,7 @@ class AcceptanceTest(unittest.TestCase):
                         "ask": D("0.0012")
                         }
             if symbol == "USDT/BTC":
-                raise portfolio.ccxt.ExchangeError
+                raise portfolio.ExchangeError
             if symbol == "BTC/USDT":
                 return {
                         "symbol": "BTC/USDT",
@@ -665,11 +679,11 @@ class AcceptanceTest(unittest.TestCase):
         def create_order(symbol, type, action, amount, price=None):
             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:
@@ -755,19 +769,22 @@ class AcceptanceTest(unittest.TestCase):
         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