@@ -97,14 +97,20 @@ func TestFetchOrderbook(t *testing.T) {
9797
9898 testexch .UpdatePairsOnce (t , e )
9999
100- availSpot , err := e .GetAvailablePairs (asset .Spot )
101- require .NoError (t , err , "GetAvailablePairs must not error" )
102-
103100 availMargin , err := e .GetAvailablePairs (asset .Margin )
104101 require .NoError (t , err , "GetAvailablePairs must not error" )
102+ require .NotEmpty (t , availMargin , "margin pairs must not be empty" )
105103
106- marginPairNotInSpot , err := availMargin .Remove (availSpot ... ).GetRandomPair ()
107- require .NoError (t , err , "GetRandomPair must not error" )
104+ enabledMargin , err := e .GetEnabledPairs (asset .Margin )
105+ require .NoError (t , err , "GetEnabledPairs must not error" )
106+
107+ marginPair := availMargin [0 ]
108+ for _ , candidate := range enabledMargin {
109+ if availMargin .Contains (candidate , true ) {
110+ marginPair = candidate
111+ break
112+ }
113+ }
108114
109115 availOptions , err := e .GetAvailablePairs (asset .Options )
110116 require .NoError (t , err , "GetAvailablePairs must not error" )
@@ -133,9 +139,9 @@ func TestFetchOrderbook(t *testing.T) {
133139 err error
134140 }{
135141 {pair : currency .EMPTYPAIR , a : asset .Spot , err : currency .ErrCurrencyPairEmpty },
136- {pair : marginPairNotInSpot , a : asset .Margin , err : errNoSpotInstrument },
137- {pair : marginPairNotInSpot , a : asset .Binary , err : asset .ErrNotSupported },
142+ {pair : marginPair , a : asset .Binary , err : asset .ErrNotSupported },
138143 {pair : currency .NewBTCUSDT (), a : asset .Spot },
144+ {pair : marginPair , a : asset .Margin },
139145 {pair : currency .NewBTCUSDT (), a : asset .USDTMarginedFutures },
140146 {pair : deliveryPair , a : asset .DeliveryFutures },
141147 {pair : optionsPair , a : asset .Options },
@@ -160,3 +166,17 @@ func TestFetchOrderbook(t *testing.T) {
160166 })
161167 }
162168}
169+
170+ func TestFetchOrderbookNoSpotInstrument (t * testing.T ) {
171+ t .Parallel ()
172+
173+ ex := new (Exchange )
174+ ex .SetDefaults ()
175+ ex .Name = t .Name ()
176+
177+ require .NoError (t , ex .Base .CurrencyPairs .StorePairs (asset .Spot , currency.Pairs {currency .NewBTCUSDT ()}, false ))
178+
179+ fakePair := currency .NewPair (currency .NewCode ("ZZFAKE" ), currency .USDT )
180+ _ , err := ex .fetchOrderbook (t .Context (), fakePair , asset .Margin , 1 )
181+ require .ErrorIs (t , err , errNoSpotInstrument )
182+ }
0 commit comments