Skip to content

Commit

Permalink
Add basic test for execute sells_multiple logic
Browse files Browse the repository at this point in the history
  • Loading branch information
xmatthias committed Oct 3, 2019
1 parent 9ee7e28 commit 1f4e5b1
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions tests/test_freqtradebot.py
Expand Up @@ -2537,6 +2537,50 @@ def test_may_execute_sell_after_stoploss_on_exchange_hit(default_conf,
assert rpc_mock.call_count == 2


def test_may_execute_sell_stoploss_on_exchange_multi(default_conf,
ticker, fee,
limit_buy_order,
markets, mocker) -> None:
default_conf['max_open_trades'] = 3
default_conf['exchange']['name'] = 'binance'
patch_RPCManager(mocker)
patch_exchange(mocker)
mocker.patch.multiple(
'freqtrade.exchange.Exchange',
get_ticker=ticker,
get_fee=fee,
markets=PropertyMock(return_value=markets),
symbol_amount_prec=lambda s, x, y: y,
symbol_price_prec=lambda s, x, y: y,
)
# Sell first trade
stoploss_mock = MagicMock(side_effect=[True, False, False])

# Sell 3rd trade (not called for the first trade)
handle_trade_mock = MagicMock(side_effect=[False, True])
wallets_mock = MagicMock()
mocker.patch.multiple(
'freqtrade.freqtradebot.FreqtradeBot',
handle_stoploss_on_exchange=stoploss_mock,
handle_trade=handle_trade_mock,
)
mocker.patch("freqtrade.wallets.Wallets.update", wallets_mock)

freqtrade = FreqtradeBot(default_conf)
freqtrade.strategy.order_types['stoploss_on_exchange'] = True
patch_get_signal(freqtrade)

# Create some test data
freqtrade.create_trades()
wallets_mock.reset_mock()

trades = Trade.query.all()

freqtrade.process_maybe_execute_sells(trades)
assert stoploss_mock.call_count == 3
assert handle_trade_mock.call_count == 2
assert wallets_mock.call_count == 1

def test_execute_sell_market_order(default_conf, ticker, fee,
ticker_sell_up, markets, mocker) -> None:
rpc_mock = patch_RPCManager(mocker)
Expand Down

0 comments on commit 1f4e5b1

Please sign in to comment.