]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - tests/test_store.py
Store tickers in balance log
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / tests / test_store.py
index df113b706483780028b9177a05d537c56335b5cc..12999d36e1b7e9bd64f0d7eda8ad002dd14b8411 100644 (file)
@@ -369,17 +369,27 @@ class BalanceStoreTest(WebMockTestCase):
 
         balance_store = market.BalanceStore(self.m)
 
-        balance_store.fetch_balances()
-        self.assertNotIn("ETC", balance_store.currencies())
-        self.assertListEqual(["USDT", "XVG", "XMR"], list(balance_store.currencies()))
-
-        balance_store.all["ETC"] = portfolio.Balance("ETC", {
-            "exchange_total": "1", "exchange_free": "0",
-            "exchange_used": "1" })
-        balance_store.fetch_balances(tag="foo")
-        self.assertEqual(0, balance_store.all["ETC"].total)
-        self.assertListEqual(["USDT", "XVG", "XMR", "ETC"], list(balance_store.currencies()))
-        self.m.report.log_balances.assert_called_with(tag="foo")
+        with self.subTest(log_tickers=False):
+            balance_store.fetch_balances()
+            self.assertNotIn("ETC", balance_store.currencies())
+            self.assertListEqual(["USDT", "XVG", "XMR"], list(balance_store.currencies()))
+
+            balance_store.all["ETC"] = portfolio.Balance("ETC", {
+                "exchange_total": "1", "exchange_free": "0",
+                "exchange_used": "1" })
+            balance_store.fetch_balances(tag="foo")
+            self.assertEqual(0, balance_store.all["ETC"].total)
+            self.assertListEqual(["USDT", "XVG", "XMR", "ETC"], list(balance_store.currencies()))
+            self.m.report.log_balances.assert_called_with(tag="foo")
+
+        with self.subTest(log_tickers=True),\
+                mock.patch.object(balance_store, "in_currency") as in_currency:
+            in_currency.return_value = "tickers"
+            balance_store.fetch_balances(log_tickers=True, ticker_currency="FOO",
+                    ticker_compute_value="compute", ticker_type="type")
+            self.m.report.log_balances.assert_called_with(compute_value='compute',
+                    tag=None, ticker_currency='FOO', tickers='tickers',
+                    type='type')
 
     @mock.patch.object(market.Portfolio, "repartition")
     def test_dispatch_assets(self, repartition):
@@ -586,27 +596,77 @@ class ReportStoreTest(WebMockTestCase):
         self.m.balances.as_json.return_value = "json"
         self.m.balances.all = { "FOO": "bar", "BAR": "baz" }
 
-        report_store.log_balances(tag="tag")
-        print_log.assert_has_calls([
-            mock.call("[Balance]"),
-            mock.call("\tbar"),
-            mock.call("\tbaz"),
-            ])
-        add_log.assert_called_once_with({
-            'type': 'balance',
-            'balances': 'json',
-            'tag': 'tag'
-            })
-        add_redis_status.assert_called_once_with({
-            'type': 'balance',
-            'balances': 'json',
-            'tag': 'tag'
-            })
+        with self.subTest(tickers=None):
+            report_store.log_balances(tag="tag")
+            print_log.assert_has_calls([
+                mock.call("[Balance]"),
+                mock.call("\tbar"),
+                mock.call("\tbaz"),
+                ])
+            add_log.assert_called_once_with({
+                'type': 'balance',
+                'balances': 'json',
+                'tag': 'tag'
+                })
+            add_redis_status.assert_called_once_with({
+                'type': 'balance',
+                'balances': 'json',
+                'tag': 'tag'
+                })
+        add_log.reset_mock()
+        add_redis_status.reset_mock()
+        with self.subTest(tickers="present"):
+            amounts = {
+                    "BTC": portfolio.Amount("BTC", 10),
+                    "ETH": portfolio.Amount("BTC", D("0.3"))
+                    }
+            amounts["ETH"].rate = D("0.1")
+
+            report_store.log_balances(tag="tag", tickers=amounts,
+                    ticker_currency="BTC", compute_value="default",
+                    type="total")
+            add_log.assert_called_once_with({
+                'type': 'balance',
+                'balances': 'json',
+                'tag': 'tag',
+                'tickers': {
+                    'compute_value': 'default',
+                    'balance_type': 'total',
+                    'currency': 'BTC',
+                    'balances': {
+                        'BTC': D('10'),
+                        'ETH': D('0.3')
+                        },
+                    'rates': {
+                        'BTC': None,
+                        'ETH': D('0.1')
+                        },
+                    'total': D('10.3')
+                    },
+                })
+            add_redis_status.assert_called_once_with({
+                'type': 'balance',
+                'balances': 'json',
+                'tag': 'tag',
+                'tickers': {
+                    'compute_value': 'default',
+                    'balance_type': 'total',
+                    'currency': 'BTC',
+                    'balances': {
+                        'BTC': D('10'),
+                        'ETH': D('0.3')
+                        },
+                    'rates': {
+                        'BTC': None,
+                        'ETH': D('0.1')
+                        },
+                    'total': D('10.3')
+                    },
+                })
 
     @mock.patch.object(market.ReportStore, "print_log")
     @mock.patch.object(market.ReportStore, "add_log")
-    @mock.patch.object(market.ReportStore, "add_redis_status")
-    def test_log_tickers(self, add_redis_status, add_log, print_log):
+    def test_log_tickers(self, add_log, print_log):
         report_store = market.ReportStore(self.m)
         amounts = {
                 "BTC": portfolio.Amount("BTC", 10),
@@ -631,21 +691,6 @@ class ReportStoreTest(WebMockTestCase):
                 },
             'total': D('10.3')
             })
-        add_redis_status.assert_called_once_with({
-            'type': 'tickers',
-            'compute_value': 'default',
-            'balance_type': 'total',
-            'currency': 'BTC',
-            'balances': {
-                'BTC': D('10'),
-                'ETH': D('0.3')
-                },
-            'rates': {
-                'BTC': None,
-                'ETH': D('0.1')
-                },
-            'total': D('10.3')
-            })
 
         add_log.reset_mock()
         compute_value = lambda x: x["bid"]