diff --git a/api_trading.go b/api_trading.go index d367516..a42b883 100644 --- a/api_trading.go +++ b/api_trading.go @@ -104,7 +104,7 @@ func (c *Client) GetUserTradesByInstrumentAndTime(params *models.GetUserTradesBy return } -func (c *Client) GetUserTradesByOrder(params *models.GetUserTradesByOrderParams) (result models.GetUserTradesResponse, err error) { +func (c *Client) GetUserTradesByOrder(params *models.GetUserTradesByOrderParams) (result []models.Trade, err error) { err = c.Call("private/get_user_trades_by_order", params, &result) return } diff --git a/client_test.go b/client_test.go index d33088f..05a81be 100644 --- a/client_test.go +++ b/client_test.go @@ -2,9 +2,10 @@ package deribit import ( "encoding/json" + "testing" + "github.com/frankrap/deribit-api/models" "github.com/stretchr/testify/assert" - "testing" ) func newClient() *Client { @@ -135,6 +136,56 @@ func TestClient_Buy(t *testing.T) { t.Logf("%#v", result) } +func TestClient_GetUserTradesByOrder(t *testing.T) { + client := newClient() + params := &models.BuyParams{ + InstrumentName: "BTC-PERPETUAL", + Amount: 10, + Price: 20000.0, + Type: "market", + Label: "TestClient_CancelByLabel", + } + buyResult, err := client.Buy(params) + if err != nil { + t.Fatal(err) + } + + t.Logf("%#v", buyResult) + + getTradesRes, err := client.GetUserTradesByOrder(&models.GetUserTradesByOrderParams{OrderID: buyResult.Order.OrderID}) + + if err != nil { + t.Fatal(err) + } + + if actualTradesCount := len(getTradesRes); actualTradesCount == 0 { + t.Errorf("no Trades") + } + + if expectTradesCount, actualTradesCount := len(buyResult.Trades), len(getTradesRes); expectTradesCount != actualTradesCount { + t.Fatalf("Expected trades count %d, actual: %d", expectTradesCount, actualTradesCount) + } + + for i, trade := range buyResult.Trades { + if trade.TradeSeq != getTradesRes[i].TradeSeq { + t.Errorf("Expected TradeSeq %d, actual %d", trade.TradeSeq, getTradesRes[i].TradeSeq) + } + + if trade.TradeID != getTradesRes[i].TradeID { + t.Errorf("Expected TradeID %s, actual %s", trade.TradeID, getTradesRes[i].TradeID) + } + + if trade.Amount != getTradesRes[i].Amount { + t.Errorf("Expected Amount %f, actual %f", trade.Amount, getTradesRes[i].Amount) + } + + if trade.Price != getTradesRes[i].Price { + t.Errorf("Expected Price %f, actual %f", trade.Price, getTradesRes[i].Price) + } + } + +} + func TestJsonOmitempty(t *testing.T) { params := &models.BuyParams{ InstrumentName: "BTC-PERPETUAL",