52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
import asyncio
|
|
import unittest
|
|
from unittest.mock import patch, AsyncMock
|
|
from data.live_data import LiveDataManager
|
|
import ccxt.async_support as ccxt
|
|
|
|
class TestLiveData(unittest.IsolatedAsyncioTestCase):
|
|
|
|
async def asyncSetUp(self):
|
|
self.symbol = 'BTC/USDT'
|
|
self.data_manager = LiveDataManager(self.symbol)
|
|
self.exchange = self.data_manager.exchange
|
|
|
|
async def asyncTearDown(self):
|
|
await self.data_manager.close()
|
|
|
|
@patch('data.live_data.ccxt.mexc.fetch_trades', new_callable=AsyncMock)
|
|
async def test_fetch_and_process_ticks(self, mock_fetch_trades):
|
|
# Mock the exchange response
|
|
mock_fetch_trades.return_value = [
|
|
{'timestamp': 1678886400000, 'symbol': 'BTC/USDT', 'price': 25000.0, 'quantity': 1.0},
|
|
{'timestamp': 1678886460000, 'symbol': 'BTC/USDT', 'price': 25050.0, 'quantity': 0.5}
|
|
]
|
|
|
|
# Call the method
|
|
await self.data_manager.fetch_and_process_ticks()
|
|
|
|
# Assert that the ticks are processed
|
|
candles, ticks = await self.data_manager.get_data()
|
|
self.assertEqual(len(ticks), 2)
|
|
self.assertEqual(len(candles), 1)
|
|
|
|
@patch('data.live_data.ccxt.mexc.fetch_ohlcv', new_callable=AsyncMock)
|
|
async def test_fetch_initial_candles(self, mock_fetch_ohlcv):
|
|
# Mock the exchange response
|
|
mock_fetch_ohlcv.return_value = [
|
|
[1678886400000, 25000.0, 25050.0, 24950.0, 25025.0, 100.0],
|
|
[1678886460000, 25025.0, 25100.0, 25000.0, 25075.0, 120.0]
|
|
]
|
|
|
|
# Call the method
|
|
await self.data_manager._fetch_initial_candles()
|
|
|
|
# Assert that the candles are fetched and formatted
|
|
candles, _ = await self.data_manager.get_data()
|
|
self.assertEqual(len(candles), 2)
|
|
self.assertEqual(candles[0]['open'], 25000.0)
|
|
self.assertEqual(candles[0]['close'], 25025.0)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|