mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-10 09:11:55 +00:00
pkg/exchange: add tests for query markets
This commit is contained in:
parent
3e087e8af3
commit
0d690c3d91
58
pkg/exchange/bitget/bitgetapi/v2/testdata/get_symbols_request.json
vendored
Normal file
58
pkg/exchange/bitget/bitgetapi/v2/testdata/get_symbols_request.json
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
"code":"00000",
|
||||||
|
"msg":"success",
|
||||||
|
"requestTime":1709620645267,
|
||||||
|
"data":[
|
||||||
|
{
|
||||||
|
"symbol":"ETHUSDT",
|
||||||
|
"baseCoin":"ETH",
|
||||||
|
"quoteCoin":"USDT",
|
||||||
|
"minTradeAmount":"0",
|
||||||
|
"maxTradeAmount":"10000000000",
|
||||||
|
"takerFeeRate":"0.002",
|
||||||
|
"makerFeeRate":"0.002",
|
||||||
|
"pricePrecision":"2",
|
||||||
|
"quantityPrecision":"4",
|
||||||
|
"quotePrecision":"6",
|
||||||
|
"status":"online",
|
||||||
|
"minTradeUSDT":"5",
|
||||||
|
"buyLimitPriceRatio":"0.05",
|
||||||
|
"sellLimitPriceRatio":"0.05",
|
||||||
|
"areaSymbol":"no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"symbol":"BTCUSDT",
|
||||||
|
"baseCoin":"BTC",
|
||||||
|
"quoteCoin":"USDT",
|
||||||
|
"minTradeAmount":"0",
|
||||||
|
"maxTradeAmount":"10000000000",
|
||||||
|
"takerFeeRate":"0.002",
|
||||||
|
"makerFeeRate":"0.002",
|
||||||
|
"pricePrecision":"2",
|
||||||
|
"quantityPrecision":"6",
|
||||||
|
"quotePrecision":"6",
|
||||||
|
"status":"gray",
|
||||||
|
"minTradeUSDT":"5",
|
||||||
|
"buyLimitPriceRatio":"0.05",
|
||||||
|
"sellLimitPriceRatio":"0.05",
|
||||||
|
"areaSymbol":"no"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"symbol":"SPONGEUSDT",
|
||||||
|
"baseCoin":"SPONGE",
|
||||||
|
"quoteCoin":"USDT",
|
||||||
|
"minTradeAmount":"0",
|
||||||
|
"maxTradeAmount":"10000000000",
|
||||||
|
"takerFeeRate":"0.001",
|
||||||
|
"makerFeeRate":"0.001",
|
||||||
|
"pricePrecision":"8",
|
||||||
|
"quantityPrecision":"0",
|
||||||
|
"quotePrecision":"8",
|
||||||
|
"status":"offline",
|
||||||
|
"minTradeUSDT":"5",
|
||||||
|
"buyLimitPriceRatio":"0.1",
|
||||||
|
"sellLimitPriceRatio":"0.1",
|
||||||
|
"areaSymbol":"no"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
6
pkg/exchange/bitget/bitgetapi/v2/testdata/get_symbols_request_error.json
vendored
Normal file
6
pkg/exchange/bitget/bitgetapi/v2/testdata/get_symbols_request_error.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"code":"40018",
|
||||||
|
"msg":"Invalid IP",
|
||||||
|
"requestTime":1709620645267,
|
||||||
|
"data":[]
|
||||||
|
}
|
87
pkg/exchange/bitget/exchange_test.go
Normal file
87
pkg/exchange/bitget/exchange_test.go
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
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")
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user