def test_detach(mock_exchange_class, mock_order_listener_class): exchange = mock_exchange_class.return_value exchange.options = ExchangeOptions() exchange.id = "fake_exchange_id" exchange.name = "coinbase" exchange.clock = mock.Mock() exchange.clock.step = 0 wallets = [Wallet(exchange, 10000 * USD), Wallet(exchange, 0 * BTC)] portfolio = Portfolio(USD, wallets) order = Order(step=0, exchange_pair=ExchangePair(exchange, USD / BTC), side=TradeSide.BUY, trade_type=TradeType.MARKET, quantity=5000.00 * USD, portfolio=portfolio, price=Decimal(7000.00)) listener = mock_order_listener_class.return_value order.attach(listener) assert len(order._listeners) == 1 assert listener in order._listeners order.detach(listener) assert len(order._listeners) == 0 assert listener not in order._listeners
def test_detach(mock_portfolio_class, mock_order_listener_class): portfolio = mock_portfolio_class.return_value order = Order(side=TradeSide.BUY, trade_type=TradeType.MARKET, pair=USD / BTC, quantity=5000.00 * USD, portfolio=portfolio, price=7000.00) listener = mock_order_listener_class.return_value order.attach(listener) assert len(order._listeners) == 1 assert listener in order._listeners order.detach(listener) assert len(order._listeners) == 0 assert listener not in order._listeners