def test_stats_get_ma(self, mock_logging): moav.log = mock_logging today = {'rate': 10000.00, 'currency': 'USD', 'count': 1} stats = Stats(int(datetime.date.today().strftime("%Y%j")), today) another_day = {'rate': 5000.00, 'currency': 'USD', 'count': 1} stats.add_day( int(datetime.date.today().strftime("%Y%j")) - 1, another_day) ma = stats.get_ma(2) self.assertEqual(7500.00, ma)
def test_stats_add_same_day_weighted(self, mock_logging): moav.log = mock_logging today = {'rate': 10000.00, 'currency': 'USD', 'count': 2} stats = Stats(int(datetime.date.today().strftime("%Y%j")), today) same_day = {'rate': 5000.00, 'currency': 'USD', 'count': 1} stats.add_day(int(datetime.date.today().strftime("%Y%j")), same_day) day = stats.get_day(int(datetime.date.today().strftime("%Y%j"))) self.assertEqual(3, day['count']) self.assertAlmostEqual(8333.33, day['rate'], 2)
def test_stats_add_same_day(self, mock_logging): moav.LOG = mock_logging today = {'rate': 10000.00, 'currency': 'USD', 'count': 1} stats = Stats(int(datetime.date.today().strftime("%Y%j")), today) same_day = {'rate': 5000.00, 'currency': 'USD', 'count': 1} stats.add_day(int(datetime.date.today().strftime("%Y%j")), same_day) day = stats.get_day(int(datetime.date.today().strftime("%Y%j"))) self.assertEqual(2, day['count']) self.assertEqual(7500.00, day['rate'])
def test_stats_get_ma_not_enough_data(self, mock_logging): moav.log = mock_logging today = {'rate': 10000.00, 'currency': 'USD', 'count': 1} stats = Stats(int(datetime.date.today().strftime("%Y%j")), today) same_day = {'rate': 5000.00, 'currency': 'USD', 'count': 1} stats.add_day(int(datetime.date.today().strftime("%Y%j")), same_day) ma = stats.get_ma(2) mock_logging.warning.assert_called_with( 'Not enough historical data, requested %d, found %d', 2, 1) self.assertTrue(ma == 7500.00)
def test_stats_get_ma_not_incomplete_data(self, mock_logging): moav.log = mock_logging today = {'rate': 10000.00, 'currency': 'USD', 'count': 1} stats = Stats(int(datetime.date.today().strftime("%Y%j")), today) same_day = {'rate': 5000.00, 'currency': 'USD', 'count': 1} stats.add_day( int(datetime.date.today().strftime("%Y%j")) - 2, same_day) earliest_day = int(datetime.date.today().strftime("%Y%j")) - 1 ma = stats.get_ma(2) mock_logging.warning.assert_called_with( 'Incomplete historical data, earliest day requested %d, found %d', earliest_day, earliest_day - 1) self.assertEqual(7500.00, ma)
def test_update_history(self, mock_logging, mock_persist_history, mock_load_history, mock_fetch_ticker): moav.conf = self.create_default_conf() moav.log = mock_logging moav.exchange = moav.connect_to_exchange(moav.conf) market_price = 9000 today = {'rate': market_price, 'currency': 'USD', 'count': 1} mock_fetch_ticker.return_value = {'bid': market_price} mock_load_history.return_value = Stats( int(datetime.date.today().strftime("%Y%j")), today) history = moav.update_history() mock_persist_history.assert_called() self.assertEqual(market_price, history.days[0]['rate']) self.assertEqual(2, history.days[0]['count'])