def test__send_order_should_send_correct_limit_order_with_opt_mode_when_query_failed( self): trader = UpbitTrader() class DummyResponse: pass dummy_response = DummyResponse() dummy_response.raise_for_status = MagicMock() dummy_response.json = MagicMock(return_value="mango_response") self.post_mock.return_value = dummy_response self.get_mock.side_effect = requests.exceptions.RequestException() trader.is_opt_mode = True trader._create_jwt_token = MagicMock(return_value="mango_token") trader._create_limit_order_query = MagicMock( return_value="mango_query") response = trader._send_order("mango", True, 500, 0.555) self.assertEqual(response, "mango_response") dummy_response.raise_for_status.assert_called_once() dummy_response.json.assert_called_once() trader._create_limit_order_query.assert_called_once_with( "mango", True, 500, 0.555) trader._create_jwt_token.assert_called_once_with( trader.ACCESS_KEY, trader.SECRET_KEY, "mango_query") self.post_mock.assert_called_once_with( trader.SERVER_URL + "/v1/orders", params="mango_query", headers={"Authorization": "Bearer mango_token"}, )
def test__execute_order_handle_task_correctly(self): dummy_task = { "request": { "id": "apple", "price": 500, "amount": 0.0001, "type": "buy" }, "callback": MagicMock(), } trader = UpbitTrader() trader._send_order = MagicMock(return_value={"uuid": "mango"}) trader._create_success_result = MagicMock(return_value="banana") trader._start_timer = MagicMock() trader._execute_order(dummy_task) trader._send_order.assert_called_once_with(trader.market, True, 500, 0.0001) trader._create_success_result.assert_called_once_with( dummy_task["request"]) trader._start_timer.assert_called_once() self.assertEqual(trader.order_map["apple"]["uuid"], "mango") self.assertEqual(trader.order_map["apple"]["callback"], dummy_task["callback"]) self.assertEqual(trader.order_map["apple"]["result"], "banana") dummy_task["callback"].assert_called_once()
def test__send_order_should_return_None_when_receive_invalid_data(self): trader = UpbitTrader() self.post_mock.side_effect = ValueError() trader._create_jwt_token = MagicMock(return_value="mango_token") trader._create_market_price_order_query = MagicMock( return_value="mango_query") response = trader._send_order("mango", False, volume=0.55) self.assertEqual(response, None)
def test__send_order_should_return_None_when_RequestException_occured( self): trader = UpbitTrader() self.post_mock.side_effect = requests.exceptions.RequestException() trader._create_jwt_token = MagicMock(return_value="mango_token") trader._create_market_price_order_query = MagicMock( return_value="mango_query") response = trader._send_order("mango", False, volume=0.55) self.assertEqual(response, None)
def test__send_order_should_NOT_send_invaild_order(self): trader = UpbitTrader() class DummyResponse: pass dummy_response = DummyResponse() dummy_response.raise_for_status = MagicMock() dummy_response.json = MagicMock(return_value="mango_response") self.post_mock.return_value = dummy_response trader._create_jwt_token = MagicMock(return_value="mango_token") trader._create_market_price_order_query = MagicMock( return_value="mango_query") response = trader._send_order("mango", True, volume=0.55) self.assertEqual(response, None) response = trader._send_order("mango", False, price=500) self.assertEqual(response, None) response = trader._send_order("mango", True) self.assertEqual(response, None) trader._create_market_price_order_query.assert_not_called()
def test__send_order_should_send_correct_market_sell_order(self): trader = UpbitTrader() class DummyResponse: pass dummy_response = DummyResponse() dummy_response.raise_for_status = MagicMock() dummy_response.json = MagicMock(return_value="mango_response") self.post_mock.return_value = dummy_response trader._create_jwt_token = MagicMock(return_value="mango_token") trader._create_market_price_order_query = MagicMock( return_value="mango_query") response = trader._send_order("mango", False, volume=0.55) self.assertEqual(response, "mango_response") trader._create_market_price_order_query.assert_called_once_with( "mango", volume=0.55)
def test__execute_order_call_cancel_request_when_request_type_is_cancel( self): dummy_task = { "request": { "id": "apple", "price": 500, "amount": 0.0001, "type": "cancel" }, "callback": "kiwi", } trader = UpbitTrader() trader.cancel_request = MagicMock() trader._send_order = MagicMock() trader._create_success_result = MagicMock() trader._start_timer = MagicMock() trader._execute_order(dummy_task) trader._send_order.assert_not_called() trader._create_success_result.assert_not_called() trader._start_timer.assert_not_called() trader.cancel_request.assert_called_once_with("apple")
def test__execute_order_should_call_callback_with_error_at_balance_lack( self): dummy_task = { "request": { "id": "apple", "price": 50000, "amount": 0.01, "type": "buy" }, "callback": MagicMock(), } trader = UpbitTrader() trader._send_order = MagicMock() trader._create_success_result = MagicMock() trader._start_timer = MagicMock() trader.balance = 450 trader._execute_order(dummy_task) dummy_task["callback"].assert_called_once_with("error!") trader._send_order.assert_not_called() trader._create_success_result.assert_not_called() trader._start_timer.assert_not_called() self.assertEqual(len(trader.order_map), 0)
def test__execute_order_should_call_callback_with_error_when__send_order_return_None( self): dummy_task = { "request": { "id": "apple", "price": 500, "amount": 0.0001, "type": "buy" }, "callback": MagicMock(), } trader = UpbitTrader() trader._send_order = MagicMock(return_value=None) trader._create_success_result = MagicMock(return_value="banana") trader._start_timer = MagicMock() trader._execute_order(dummy_task) dummy_task["callback"].assert_called_once_with("error!") trader._send_order.assert_called_once_with(trader.market, True, 500, 0.0001) trader._create_success_result.assert_not_called() trader._start_timer.assert_not_called() self.assertEqual(len(trader.order_map), 0)