]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - tests/test_portfolio.py
Fix ccxt switching currency codes
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / tests / test_portfolio.py
index a1b95bf03958bf6aa2074df6ec5ee8462bf11449..14dc9954f63679c03a12a087c2f69102c3109705 100644 (file)
@@ -2,7 +2,6 @@ from .helper import *
 import portfolio
 import datetime
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class ComputationTest(WebMockTestCase):
     def test_compute_value(self):
         compute = mock.Mock()
@@ -26,7 +25,6 @@ class ComputationTest(WebMockTestCase):
         portfolio.Computation.compute_value("foo", "bid", compute_value="test")
         compute.assert_called_with("foo", "bid")
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class TradeTest(WebMockTestCase):
 
     def test_values_assertion(self):
@@ -220,6 +218,26 @@ class TradeTest(WebMockTestCase):
             self.assertEqual(0, len(trade.orders))
             Order.assert_not_called()
 
+        self.m.get_ticker.return_value = None
+        with self.subTest(desc="Unknown ticker"):
+            filled_amount.return_value = portfolio.Amount("BTC", "3")
+            compute_value.return_value = D("0.125")
+
+            value_from = portfolio.Amount("BTC", "1")
+            value_from.rate = D("0.1")
+            value_from.linked_to = portfolio.Amount("FOO", "10")
+            value_to = portfolio.Amount("BTC", "10")
+            trade = portfolio.Trade(value_from, value_to, "FOO", self.m)
+
+            trade.prepare_order()
+
+            filled_amount.assert_not_called()
+            compute_value.assert_not_called()
+            self.assertEqual(0, len(trade.orders))
+            Order.assert_not_called()
+            self.m.report.log_error.assert_called_once_with('prepare_order',
+                    message='Unknown ticker FOO/BTC')
+
         self.m.get_ticker.return_value = { "inverted": False }
         with self.subTest(desc="Already filled"):
             filled_amount.return_value = portfolio.Amount("FOO", "100")
@@ -591,7 +609,6 @@ class TradeTest(WebMockTestCase):
         self.assertEqual("ETH", as_json["currency"])
         self.assertEqual("BTC", as_json["base_currency"])
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class BalanceTest(WebMockTestCase):
     def test_values(self):
         balance = portfolio.Balance("BTC", {
@@ -667,7 +684,6 @@ class BalanceTest(WebMockTestCase):
         self.assertEqual(D(0), as_json["margin_available"])
         self.assertEqual(D(0), as_json["margin_borrowed"])
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class OrderTest(WebMockTestCase):
     def test_values(self):
         order = portfolio.Order("buy", portfolio.Amount("ETH", 10),
@@ -1729,7 +1745,6 @@ class OrderTest(WebMockTestCase):
             result = order.retrieve_order()
             self.assertFalse(result)
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class MouvementTest(WebMockTestCase):
     def test_values(self):
         mouvement = portfolio.Mouvement("ETH", "BTC", {
@@ -1742,7 +1757,7 @@ class MouvementTest(WebMockTestCase):
         self.assertEqual(42, mouvement.id)
         self.assertEqual("buy", mouvement.action)
         self.assertEqual(D("0.0015"), mouvement.fee_rate)
-        self.assertEqual(portfolio.datetime(2017, 12, 30, 12, 0, 12), mouvement.date)
+        self.assertEqual(portfolio.datetime.datetime(2017, 12, 30, 12, 0, 12), mouvement.date)
         self.assertEqual(D("0.1"), mouvement.rate)
         self.assertEqual(portfolio.Amount("ETH", "10"), mouvement.total)
         self.assertEqual(portfolio.Amount("BTC", "1"), mouvement.total_in_base)
@@ -1780,14 +1795,13 @@ class MouvementTest(WebMockTestCase):
         as_json = mouvement.as_json()
 
         self.assertEqual(D("0.0015"), as_json["fee_rate"])
-        self.assertEqual(portfolio.datetime(2017, 12, 30, 12, 0, 12), as_json["date"])
+        self.assertEqual(portfolio.datetime.datetime(2017, 12, 30, 12, 0, 12), as_json["date"])
         self.assertEqual("buy", as_json["action"])
         self.assertEqual(D("10"), as_json["total"])
         self.assertEqual(D("1"), as_json["total_in_base"])
         self.assertEqual("BTC", as_json["base_currency"])
         self.assertEqual("ETH", as_json["currency"])
 
-@unittest.skipUnless("unit" in limits, "Unit skipped")
 class AmountTest(WebMockTestCase):
     def test_values(self):
         amount = portfolio.Amount("BTC", "0.65")