Files

41 lines
1.4 KiB
Python
Raw Permalink Normal View History

"""Tests for exchange factory."""
import pytest
from unittest.mock import patch, Mock
from src.exchanges.factory import ExchangeFactory
from src.exchanges.coinbase import CoinbaseExchange
class TestExchangeFactory:
"""Tests for ExchangeFactory."""
def test_register_exchange(self):
"""Test exchange registration."""
ExchangeFactory.register_exchange("test_exchange", CoinbaseExchange)
assert "test_exchange" in ExchangeFactory.list_available()
def test_get_exchange(self):
"""Test getting exchange instance."""
with patch('src.exchanges.factory.get_key_manager') as mock_km:
mock_km.return_value.get_exchange_keys.return_value = {
'api_key': 'test_key',
'secret_key': 'test_secret',
'permissions': 'read_only'
}
exchange = ExchangeFactory.get_exchange("coinbase")
assert exchange is not None
assert isinstance(exchange, CoinbaseExchange)
def test_get_nonexistent_exchange(self):
"""Test getting non-existent exchange."""
with pytest.raises(ValueError, match="not registered"):
ExchangeFactory.get_exchange("nonexistent")
def test_list_available(self):
"""Test listing available exchanges."""
exchanges = ExchangeFactory.list_available()
assert isinstance(exchanges, list)
assert "coinbase" in exchanges