import pytest from unittest.mock import patch, MagicMock from data.binance_rest import BinanceRestClient @pytest.fixture def client(): with patch("data.binance_rest.Client") as mock_client_cls: mock_client_cls.return_value = MagicMock() c = BinanceRestClient(api_key="test", api_secret="test") return c def test_get_top_coins_returns_symbols(client): mock_tickers = [ {"symbol": "BTCUSDT", "quoteVolume": "1000000"}, {"symbol": "ETHUSDT", "quoteVolume": "500000"}, {"symbol": "BTCETH", "quoteVolume": "200000"}, ] with patch.object(client.client, "get_ticker", return_value=mock_tickers): result = client.get_top_coins(limit=2) assert "BTCUSDT" in result assert "ETHUSDT" in result assert "BTCETH" not in result def test_get_ohlcv_returns_dataframe(client): mock_klines = [ [1700000000000, "40000", "41000", "39000", "40500", "100", 1700003599999, "4050000", 500, "50", "2025000", "0"] ] with patch.object(client.client, "get_klines", return_value=mock_klines): df = client.get_ohlcv("BTCUSDT", interval="1h", limit=1) assert len(df) == 1 assert "close" in df.columns assert df.iloc[0]["close"] == 40500.0 def test_get_all_tickers(client): mock_prices = [ {"symbol": "BTCUSDT", "price": "40000.00"}, {"symbol": "ETHUSDT", "price": "3500.00"}, ] with patch.object(client.client, "get_all_tickers", return_value=mock_prices): result = client.get_all_prices() assert result["BTCUSDT"] == 40000.0