mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-14 19:13:52 +00:00
88 lines
2.6 KiB
Go
88 lines
2.6 KiB
Go
|
package bitget
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"math"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
|
||
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||
|
"github.com/c9s/bbgo/pkg/testing/httptesting"
|
||
|
"github.com/c9s/bbgo/pkg/types"
|
||
|
)
|
||
|
|
||
|
func TestExchange_QueryMarkets(t *testing.T) {
|
||
|
ex := New("key", "secret", "passphrase")
|
||
|
|
||
|
t.Run("succeeds", func(t *testing.T) {
|
||
|
transport := &httptesting.MockTransport{}
|
||
|
ex.client.HttpClient.Transport = transport
|
||
|
|
||
|
f, err := os.ReadFile("bitgetapi/v2/testdata/get_symbols_request.json")
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
transport.GET("/api/v2/spot/public/symbols", func(req *http.Request) (*http.Response, error) {
|
||
|
return httptesting.BuildResponseString(http.StatusOK, string(f)), nil
|
||
|
})
|
||
|
|
||
|
mkts, err := ex.QueryMarkets(context.Background())
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
expMkts := types.MarketMap{
|
||
|
"ETHUSDT": types.Market{
|
||
|
Exchange: types.ExchangeBitget,
|
||
|
Symbol: "ETHUSDT",
|
||
|
LocalSymbol: "ETHUSDT",
|
||
|
PricePrecision: 2,
|
||
|
VolumePrecision: 4,
|
||
|
QuoteCurrency: "USDT",
|
||
|
BaseCurrency: "ETH",
|
||
|
MinNotional: fixedpoint.NewFromInt(5),
|
||
|
MinAmount: fixedpoint.NewFromInt(5),
|
||
|
MinQuantity: fixedpoint.NewFromInt(0),
|
||
|
MaxQuantity: fixedpoint.NewFromInt(10000000000),
|
||
|
StepSize: fixedpoint.NewFromFloat(1.0 / math.Pow10(4)),
|
||
|
TickSize: fixedpoint.NewFromFloat(1.0 / math.Pow10(2)),
|
||
|
MinPrice: fixedpoint.Zero,
|
||
|
MaxPrice: fixedpoint.Zero,
|
||
|
},
|
||
|
"BTCUSDT": types.Market{
|
||
|
Exchange: types.ExchangeBitget,
|
||
|
Symbol: "BTCUSDT",
|
||
|
LocalSymbol: "BTCUSDT",
|
||
|
PricePrecision: 2,
|
||
|
VolumePrecision: 6,
|
||
|
QuoteCurrency: "USDT",
|
||
|
BaseCurrency: "BTC",
|
||
|
MinNotional: fixedpoint.NewFromInt(5),
|
||
|
MinAmount: fixedpoint.NewFromInt(5),
|
||
|
MinQuantity: fixedpoint.NewFromInt(0),
|
||
|
MaxQuantity: fixedpoint.NewFromInt(10000000000),
|
||
|
StepSize: fixedpoint.NewFromFloat(1.0 / math.Pow10(6)),
|
||
|
TickSize: fixedpoint.NewFromFloat(1.0 / math.Pow10(2)),
|
||
|
MinPrice: fixedpoint.Zero,
|
||
|
MaxPrice: fixedpoint.Zero,
|
||
|
},
|
||
|
}
|
||
|
assert.Equal(t, expMkts, mkts)
|
||
|
})
|
||
|
|
||
|
t.Run("error", func(t *testing.T) {
|
||
|
transport := &httptesting.MockTransport{}
|
||
|
ex.client.HttpClient.Transport = transport
|
||
|
|
||
|
f, err := os.ReadFile("bitgetapi/v2/testdata/get_symbols_request_error.json")
|
||
|
assert.NoError(t, err)
|
||
|
|
||
|
transport.GET("/api/v2/spot/public/symbols", func(req *http.Request) (*http.Response, error) {
|
||
|
return httptesting.BuildResponseString(http.StatusBadRequest, string(f)), nil
|
||
|
})
|
||
|
|
||
|
_, err = ex.QueryMarkets(context.Background())
|
||
|
assert.ErrorContains(t, err, "Invalid IP")
|
||
|
})
|
||
|
}
|