Skip to content

Commit

Permalink
update unittest
Browse files Browse the repository at this point in the history
  • Loading branch information
bczhang committed Sep 26, 2023
1 parent 869fee6 commit 1bb2d1b
Showing 1 changed file with 64 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,7 @@ def trade_event_for_full_fill_websocket_update(self, order: InFlightOrder):
"size": float(order.amount) * 1000,
"fee": str(self.expected_fill_fee.percent),
"remainSize": "0",
"matchSize": float(order.amount) * 1000,
"matchSize": float(order.amount) * 1000000,
"canceledSize": "0",
"clientOid": order.client_order_id or "",
"orderTime": 1545914149935808589,
Expand Down Expand Up @@ -1648,3 +1648,66 @@ def test_user_stream_update_for_order_full_fill(self, mock_api):
self.assertEqual(fill_event.price, position.entry_price)
self.assertEqual(-fill_event.amount, (self.exchange.get_quantity_of_contracts(self.trading_pair, position.amount)))
self.assertEqual(leverage, position.leverage)

@aioresponses()
def test_lost_order_user_stream_full_fill_events_are_processed(self, mock_api):
self.exchange._set_current_timestamp(1640780000)
self._simulate_trading_rules_initialized()
self.exchange.start_tracking_order(
order_id=self.client_order_id_prefix + "1",
exchange_order_id=str(self.expected_exchange_order_id),
trading_pair=self.trading_pair,
order_type=OrderType.LIMIT,
trade_type=TradeType.BUY,
price=Decimal("10000"),
amount=Decimal("1"),
)
order = self.exchange.in_flight_orders[self.client_order_id_prefix + "1"]

for _ in range(self.exchange._order_tracker._lost_order_count_limit + 1):
self.async_run_with_timeout(
self.exchange._order_tracker.process_order_not_found(client_order_id=order.client_order_id))

self.assertNotIn(order.client_order_id, self.exchange.in_flight_orders)

order_event = self.order_event_for_full_fill_websocket_update(order=order)
trade_event = self.trade_event_for_full_fill_websocket_update(order=order)

mock_queue = AsyncMock()
event_messages = []
if trade_event:
event_messages.append(trade_event)
if order_event:
event_messages.append(order_event)
event_messages.append(asyncio.CancelledError)
mock_queue.get.side_effect = event_messages
self.exchange._user_stream_tracker._user_stream = mock_queue

if self.is_order_fill_http_update_executed_during_websocket_order_event_processing:
self.configure_full_fill_trade_response(
order=order,
mock_api=mock_api)

try:
self.async_run_with_timeout(self.exchange._user_stream_event_listener())
except asyncio.CancelledError:
pass
# Execute one more synchronization to ensure the async task that processes the update is finished
self.async_run_with_timeout(order.wait_until_completely_filled())

fill_event = self.order_filled_logger.event_log[0]
self.assertEqual(self.exchange.current_timestamp, fill_event.timestamp)
self.assertEqual(order.client_order_id, fill_event.order_id)
self.assertEqual(order.trading_pair, fill_event.trading_pair)
self.assertEqual(order.trade_type, fill_event.trade_type)
self.assertEqual(order.order_type, fill_event.order_type)
self.assertEqual(order.price, fill_event.price)
self.assertEqual(order.amount, fill_event.amount)
expected_fee = self.expected_fill_fee
self.assertEqual(expected_fee, fill_event.trade_fee)

self.assertEqual(0, len(self.buy_order_completed_logger.event_log))
self.assertNotIn(order.client_order_id, self.exchange.in_flight_orders)
self.assertNotIn(order.client_order_id, self.exchange._order_tracker.lost_orders)
self.assertTrue(order.is_filled)
self.assertTrue(order.is_failure)

0 comments on commit 1bb2d1b

Please sign in to comment.