+ @mock.patch.object(market, "redis")
+ def test_store_redis_report(self, redis):
+ connect_mock = mock.Mock()
+ redis.Redis.return_value = connect_mock
+
+ m = market.Market(self.ccxt, self.market_args(),
+ redis_config={"config": "redis_config"}, market_id=1)
+
+ with self.subTest(error=False),\
+ mock.patch.object(m, "report") as report:
+ report.to_json_redis.return_value = [
+ ("type1", "payload1"),
+ ("type2", "payload2"),
+ ]
+ m.store_redis_report(datetime.datetime(2018, 3, 24))
+ connect_mock.assert_has_calls([
+ mock.call.set("/cryptoportfolio/1/2018-03-24T00:00:00/type1", "payload1", ex=31*24*60*60),
+ mock.call.set("/cryptoportfolio/1/latest/type1", "payload1"),
+ mock.call.set("/cryptoportfolio/1/2018-03-24T00:00:00/type2", "payload2", ex=31*24*60*60),
+ mock.call.set("/cryptoportfolio/1/latest/type2", "payload2"),
+ mock.call.set("/cryptoportfolio/1/latest/date", "2018-03-24T00:00:00"),
+ ])
+
+ connect_mock.reset_mock()
+ with self.subTest(error=True),\
+ mock.patch('sys.stdout', new_callable=StringIO) as stdout_mock:
+ redis.Redis.side_effect = Exception("Bouh")
+ m.store_redis_report(datetime.datetime(2018, 3, 24))
+ self.assertEqual(stdout_mock.getvalue(), "impossible to store report to redis: Exception; Bouh\n")
+