From eb22f26f62bc9bdfc49d802d2134b21944066644 Mon Sep 17 00:00:00 2001 From: ox Date: Mon, 11 May 2026 12:56:55 -0700 Subject: [PATCH] Wire trade order test endpoint --- README.md | 2 +- .../services/trade.service.spec.ts | 44 +++++++++++++++++++ src/bingx-client/services/trade.service.ts | 3 +- src/bingx/endpoints/index.ts | 1 + 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/bingx-client/services/trade.service.spec.ts diff --git a/README.md b/README.md index 6dd246f..cba319f 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ stream.latestTradeDetail$.subscribe((v) => {}) - [ ] Export fund flow - [ ] User fee rate * Trade Interface - - [ ] Trade order test + - [x] Trade order test - [x] Trade order - [ ] Bulk order - [x] One-Click Close All Positions diff --git a/src/bingx-client/services/trade.service.spec.ts b/src/bingx-client/services/trade.service.spec.ts new file mode 100644 index 0000000..780ea4f --- /dev/null +++ b/src/bingx-client/services/trade.service.spec.ts @@ -0,0 +1,44 @@ +import { AccountInterface } from 'bingx-api/bingx/account/account.interface'; +import { BingxTradeOrderTestEndpoint } from 'bingx-api/bingx/endpoints/bingx-trade-order-test-endpoint'; +import { OrderSideEnum, OrderTypeEnum } from 'bingx-api/bingx/enums'; +import { BingxCreateTradeOrderInterface } from 'bingx-api/bingx/interfaces/trade-order.interface'; +import { RequestExecutorInterface } from 'bingx-api/bingx/request-executor/request-executor.interface'; +import { TradeService } from 'bingx-api/bingx-client/services/trade.service'; + +describe('TradeService', () => { + describe('createTradeOrderTest', () => { + it('executes the test order endpoint with the order payload', async () => { + const requestExecutor: jest.Mocked = { + execute: jest.fn().mockResolvedValue({ code: 0, data: {} }), + }; + const account: AccountInterface = { + getApiKey: jest.fn().mockReturnValue('api-key'), + sign: jest.fn().mockReturnValue({ + toString: () => 'signature', + secretKey: () => 'secret', + }), + }; + const order: BingxCreateTradeOrderInterface = { + symbol: 'BTC-USDT', + type: OrderTypeEnum.MARKET, + side: OrderSideEnum.BUY, + quantity: '0.01', + }; + + await new TradeService(requestExecutor).createTradeOrderTest( + order, + account, + ); + + expect(requestExecutor.execute).toHaveBeenCalledTimes(1); + + const endpoint = requestExecutor.execute.mock.calls[0][0]; + expect(endpoint).toBeInstanceOf(BingxTradeOrderTestEndpoint); + expect(endpoint.path()).toBe('/openApi/swap/v2/trade/order/test'); + expect(endpoint.method()).toBe('post'); + expect(endpoint.parameters().asRecord()).toEqual( + expect.objectContaining(order), + ); + }); + }); +}); diff --git a/src/bingx-client/services/trade.service.ts b/src/bingx-client/services/trade.service.ts index 65fa5bd..9b57feb 100644 --- a/src/bingx-client/services/trade.service.ts +++ b/src/bingx-client/services/trade.service.ts @@ -12,6 +12,7 @@ import { BingxSwitchLeverageEndpoint } from 'bingx-api/bingx/endpoints/bingx-swi import { OrderPositionSideEnum } from 'bingx-api/bingx'; import { BingxUserHistoryOrdersEndpoint } from 'bingx-api/bingx/endpoints/bingx-user-history-orders-endpoint'; import { BingxCancelOrderEndpoint } from 'bingx-api/bingx/endpoints/bingx-cancel-order-endpoint'; +import { BingxTradeOrderTestEndpoint } from 'bingx-api/bingx/endpoints/bingx-trade-order-test-endpoint'; export class TradeService { constructor(private readonly requestExecutor: RequestExecutorInterface) {} @@ -30,7 +31,7 @@ export class TradeService { account: AccountInterface, ) { return this.requestExecutor.execute( - new BingxTradeOrderEndpoint(order, account), + new BingxTradeOrderTestEndpoint(order, account), ); } diff --git a/src/bingx/endpoints/index.ts b/src/bingx/endpoints/index.ts index 6866f8b..82762f7 100644 --- a/src/bingx/endpoints/index.ts +++ b/src/bingx/endpoints/index.ts @@ -8,6 +8,7 @@ export * from './bingx-perpetual-swap-positions-endpoint'; export * from './bingx-request.interface'; export * from './bingx-response.interface'; export * from './bingx-trade-order-endpoint'; +export { BingxTradeOrderTestEndpoint } from './bingx-trade-order-test-endpoint'; export * from './endpoint.interface'; export * from './endpoint'; export * from './bingx-user-history-orders-endpoint';