Пример #1
0
    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"},
        )
Пример #2
0
    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()
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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()
Пример #6
0
    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)
Пример #7
0
    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")
Пример #8
0
    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)
Пример #9
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)