551c86264a
OKX requires quote_ccy/base_ccy for market orders; include trading_usdt in balance display and total funds. Co-authored-by: Cursor <cursoragent@cursor.com>
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""OKX USDT/USDC 现货市价兑换参数."""
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
from lib.exchange.okx_options_lib import spot_market_swap_usdt_usdc
|
|
|
|
|
|
class TestOkxSpotSwap(unittest.TestCase):
|
|
def test_usdt_to_usdc_uses_quote_ccy(self):
|
|
ex = MagicMock()
|
|
ex.private_post_trade_order.return_value = {
|
|
"data": [{"sCode": "0", "ordId": "1"}],
|
|
}
|
|
result = spot_market_swap_usdt_usdc(ex, direction="usdt_to_usdc", amount=10)
|
|
self.assertTrue(result["ok"])
|
|
body = ex.private_post_trade_order.call_args[0][0]
|
|
self.assertEqual(body["tgtCcy"], "quote_ccy")
|
|
self.assertEqual(body["side"], "buy")
|
|
|
|
def test_usdc_to_usdt_uses_base_ccy(self):
|
|
ex = MagicMock()
|
|
ex.private_post_trade_order.return_value = {
|
|
"data": [{"sCode": "0", "ordId": "2"}],
|
|
}
|
|
result = spot_market_swap_usdt_usdc(ex, direction="usdc_to_usdt", amount=5)
|
|
self.assertTrue(result["ok"])
|
|
body = ex.private_post_trade_order.call_args[0][0]
|
|
self.assertEqual(body["tgtCcy"], "base_ccy")
|
|
self.assertEqual(body["side"], "sell")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|