def test_submit(mock_order_class, mock_exchange_class): exchange = mock_exchange_class.return_value broker = Broker() broker.exchanges = [exchange] order = mock_order_class.return_value assert broker.unexecuted == [] broker.submit(order) assert order in broker.unexecuted
def test_cancel_executed_order(mock_order_class, mock_exchange_class): exchange = mock_exchange_class.return_value exchange.options.max_trade_size = 1e6 broker = Broker() broker.exchanges = [exchange] order = mock_order_class.return_value order.cancel = mock.Mock(return_value=None) broker.submit(order) assert order in broker.unexecuted order.status = OrderStatus.CANCELLED with pytest.raises(Warning): broker.cancel(order)
def test_cancel_unexecuted_order(mock_order_class, mock_exchange_class): exchange = mock_exchange_class.return_value broker = Broker() broker.exchanges = [exchange] order = mock_order_class.return_value order.cancel = mock.Mock(return_value=None) order.status = OrderStatus.PENDING broker.submit(order) assert order in broker.unexecuted broker.cancel(order) assert order not in broker.unexecuted order.cancel.assert_called_once_with()
def test_update_on_single_exchange_with_single_order(mock_order_class, mock_exchange_class): exchange = mock_exchange_class.return_value broker = Broker() broker.exchanges = [exchange] order = mock_order_class.return_value order.id = "fake_id" order.start = 0 order.end = None order.is_executable_on = mock.Mock(side_effect=[False, True]) order.attach = mock.Mock(return_value=None) broker.submit(order) # Test order does execute broker.update() assert order not in broker.unexecuted assert order.id in broker.executed order.attach.assert_called_once_with(broker)