Files

38 lines
1.1 KiB
Python

from __future__ import annotations
import pytest
from arbitrade.risk.pre_trade import PreTradeValidator
def test_pre_trade_validator_accepts_when_balance_and_min_size_pass() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert validator.validate(
balances_by_asset={"USD": 100.0},
required_by_asset={"USD": 75.0},
)
def test_pre_trade_validator_rejects_when_balance_insufficient() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert not validator.validate(
balances_by_asset={"USD": 40.0},
required_by_asset={"USD": 75.0},
)
def test_pre_trade_validator_rejects_when_below_min_size() -> None:
validator = PreTradeValidator(min_order_size_by_asset={"USD": 50.0})
assert not validator.validate(
balances_by_asset={"USD": 100.0},
required_by_asset={"USD": 30.0},
)
def test_pre_trade_validator_rejects_invalid_min_order_size_config() -> None:
with pytest.raises(ValueError, match="minimum order size"):
PreTradeValidator(min_order_size_by_asset={"USD": 0.0})