from importlib.metadata import entry_points, version

from binance_quant.backtest import run_futures_backtest
from binance_quant.market_data import load_candles_csv


def test_package_imports():
    import binance_quant

    assert binance_quant.__version__ == version("binance-quant")


def test_console_entrypoint_target_imports():
    import binance_quant.cli

    scripts = entry_points(group="console_scripts")
    entrypoint = next(script for script in scripts if script.name == "binance-quant")

    assert entrypoint.load() is binance_quant.cli.app


def test_socks_proxy_support_is_installed():
    import socksio

    assert socksio is not None


def test_readme_sample_candles_csv_exists_and_loads():
    candles = list(load_candles_csv("data/candles.csv", "BTCUSDT"))

    assert len(candles) >= 6
    assert all(candle.symbol == "BTCUSDT" for candle in candles)


def test_readme_futures_backtest_example_produces_trade():
    result = run_futures_backtest(
        load_candles_csv("data/candles.csv", "BTCUSDT"),
        fast_window=10,
        slow_window=30,
    )

    assert result.trade_count >= 1
