feat: WebSocket 실시간 캔들 스트림 구현
Made-with: Cursor
This commit is contained in:
46
tests/test_data_stream.py
Normal file
46
tests/test_data_stream.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import pytest
|
||||
import asyncio
|
||||
from unittest.mock import AsyncMock, patch, MagicMock
|
||||
from src.data_stream import KlineStream
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_kline_stream_parses_message():
|
||||
stream = KlineStream(symbol="XRPUSDT", interval="1m")
|
||||
raw_msg = {
|
||||
"k": {
|
||||
"t": 1700000000000,
|
||||
"o": "0.5000",
|
||||
"h": "0.5100",
|
||||
"l": "0.4900",
|
||||
"c": "0.5050",
|
||||
"v": "100000",
|
||||
"x": True,
|
||||
}
|
||||
}
|
||||
candle = stream.parse_kline(raw_msg)
|
||||
assert candle["close"] == 0.5050
|
||||
assert candle["is_closed"] is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_callback_called_on_closed_candle():
|
||||
received = []
|
||||
stream = KlineStream(
|
||||
symbol="XRPUSDT",
|
||||
interval="1m",
|
||||
on_candle=lambda c: received.append(c),
|
||||
)
|
||||
raw_msg = {
|
||||
"k": {
|
||||
"t": 1700000000000,
|
||||
"o": "0.5",
|
||||
"h": "0.51",
|
||||
"l": "0.49",
|
||||
"c": "0.505",
|
||||
"v": "100000",
|
||||
"x": True,
|
||||
}
|
||||
}
|
||||
stream.handle_message(raw_msg)
|
||||
assert len(received) == 1
|
||||
Reference in New Issue
Block a user