45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
"""Tests for WebSocket functionality."""
|
|
|
|
import pytest
|
|
from unittest.mock import Mock, patch
|
|
from src.exchanges.coinbase import CoinbaseAdapter
|
|
|
|
|
|
def test_subscribe_ticker():
|
|
"""Test ticker subscription."""
|
|
adapter = CoinbaseAdapter("test_key", "test_secret", sandbox=True)
|
|
callback = Mock()
|
|
|
|
adapter.subscribe_ticker("BTC/USD", callback)
|
|
|
|
assert f'ticker_BTC/USD' in adapter._ws_callbacks
|
|
assert adapter._ws_callbacks[f'ticker_BTC/USD'] == callback
|
|
|
|
|
|
def test_subscribe_orderbook():
|
|
"""Test orderbook subscription."""
|
|
adapter = CoinbaseAdapter("test_key", "test_secret", sandbox=True)
|
|
callback = Mock()
|
|
|
|
adapter.subscribe_orderbook("BTC/USD", callback)
|
|
|
|
assert f'orderbook_BTC/USD' in adapter._ws_callbacks
|
|
|
|
|
|
def test_subscribe_trades():
|
|
"""Test trades subscription."""
|
|
adapter = CoinbaseAdapter("test_key", "test_secret", sandbox=True)
|
|
callback = Mock()
|
|
|
|
adapter.subscribe_trades("BTC/USD", callback)
|
|
|
|
assert f'trades_BTC/USD' in adapter._ws_callbacks
|
|
|
|
|
|
def test_normalize_symbol():
|
|
"""Test symbol normalization."""
|
|
adapter = CoinbaseAdapter("test_key", "test_secret", sandbox=True)
|
|
|
|
assert adapter.normalize_symbol("BTC/USD") == "BTC-USD"
|
|
assert adapter.normalize_symbol("ETH/USDT") == "ETH-USDT"
|