Skip to content

Commit 4b52d12

Browse files
committed
fix bfx tests
1 parent cc793cb commit 4b52d12

File tree

4 files changed

+93
-58
lines changed

4 files changed

+93
-58
lines changed

pub/bfx/test/Bfx/Data/CancelOrderMultiSpec.hs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@ import Test.Hspec
1313
spec :: Spec
1414
spec =
1515
describe "ToJSON" $ do
16-
it "ByOrderId" $
17-
A.encode (ByOrderId [OrderId 1, OrderId 23])
18-
`shouldBe` "{\"id\":[1,23]}"
19-
it "ByOrderClientId" $
20-
A.encode
16+
it "ByOrderId"
17+
$ A.encode (ByOrderId [OrderId 1, OrderId 23])
18+
`shouldBe` "{\"id\":[1,23]}"
19+
it "ByOrderClientId"
20+
$ A.encode
2121
( ByOrderClientId
2222
[ (OrderClientId 1, epoch),
2323
(OrderClientId 23, addUTCTime 86400 epoch)
2424
]
2525
)
26-
`shouldBe` "{\"cid\":[[1,\"1970-01-01\"],[23,\"1970-01-02\"]]}"
27-
it "ByOrderGroupId" $
28-
A.encode (ByOrderGroupId [OrderGroupId 1, OrderGroupId 23])
29-
`shouldBe` "{\"gid\":[1,23]}"
30-
it "Everything" $
31-
A.encode Everything
32-
`shouldBe` "{\"all\":1}"
26+
`shouldBe` "{\"cid\":[[1,\"1970-01-01\"],[23,\"1970-01-02\"]]}"
27+
it "ByOrderGroupId"
28+
$ A.encode (ByOrderGroupId [OrderGroupId 1, OrderGroupId 23])
29+
`shouldBe` "{\"gid\":[1,23]}"
30+
it "Everything"
31+
$ A.encode Everything
32+
`shouldBe` "{\"all\":1}"

pub/bfx/test/Bfx/Data/SubmitOrderSpec.hs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ spec =
1818
adabtc <- newCurrencyPair "ADABTC"
1919
let req =
2020
SubmitOrder.Request
21-
(testAmt @'Buy)
21+
Buy
22+
testAdaAmt
2223
adabtc
23-
(Tagged 0.00081037)
24+
(QuotePerBase 0.00081037)
2425
SubmitOrder.optsPostOnly
2526
A.encode req
2627
`shouldBe` "{\"amount\":\"4.004004\",\"flags\":4096,\"price\":\"0.00081037\",\"symbol\":\"tADABTC\",\"type\":\"EXCHANGE LIMIT\"}"

pub/bfx/test/Bfx/TestEnv.hs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
module Bfx.TestEnv
44
( eraseFirst,
5-
testAmt,
5+
testAdaAmt,
66
itRight,
77
itLeft,
88
)
@@ -15,13 +15,8 @@ eraseFirst :: (Bifunctor f) => f a b -> f () b
1515
eraseFirst =
1616
first $ const ()
1717

18-
testAmt ::
19-
forall act.
20-
( CashTags (Tags 'MoneyAmount |+| 'Unsigned |+| 'Base |+| act)
21-
) =>
22-
Money (Tags 'MoneyAmount |+| 'Unsigned |+| 'Base |+| act)
23-
testAmt =
24-
Tagged 4.004004
18+
testAdaAmt :: MoneyAmount
19+
testAdaAmt = MoneyAmount 4.004004
2520

2621
itRight ::
2722
( Show a

pub/bfx/test/BfxSpec.hs

Lines changed: 75 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ module BfxSpec
55
)
66
where
77

8-
import qualified Bfx as Bitfinex
8+
import qualified Bfx
99
import qualified Bfx.Data.Candles as Candles
1010
import qualified Bfx.Data.GetOrders as GetOrders
11+
import qualified Bfx.Data.MarketAveragePrice as MarketAveragePrice
1112
import qualified Bfx.Data.SubmitOrder as SubmitOrder
1213
import Bfx.Import
1314
import Bfx.TestEnv
@@ -18,98 +19,136 @@ spec :: Spec
1819
spec = before sysEnv $ do
1920
let adabtc = either impureThrow id $ newCurrencyPair "ADABTC"
2021
it "platformStatus succeeds" . const $ do
21-
ss <- Bitfinex.platformStatus
22+
ss <- Bfx.platformStatus
2223
ss `shouldBe` PltOperative
2324
it "symbolsDetails succeeds" . const $ do
24-
ss <- Bitfinex.symbolsDetails
25+
ss <- Bfx.symbolsDetails
2526
Map.lookup adabtc ss
2627
`shouldBe` Just
2728
CurrencyPairConf
2829
{ currencyPairPrecision = 5,
2930
currencyPairInitMargin = 30 % 1,
3031
currencyPairMinMargin = 15,
31-
currencyPairMaxOrderAmt = Tagged 250000,
32-
currencyPairMinOrderAmt = Tagged 4
32+
currencyPairMaxOrderBaseAmt = MoneyAmount 250000,
33+
currencyPairMinOrderBaseAmt = MoneyAmount 4
3334
}
3435
it "marketAveragePrice succeeds" . const $ do
35-
sym <- newCurrencyPair "ADABTC"
36-
buyRate <- Bitfinex.marketAveragePrice (testAmt @'Buy) sym
37-
sellRate <- Bitfinex.marketAveragePrice (testAmt @'Sell) sym
38-
unTagged buyRate `shouldSatisfy` (> unTagged sellRate)
36+
buyRate <-
37+
Bfx.marketAveragePrice
38+
MarketAveragePrice.Request
39+
{ MarketAveragePrice.buyOrSell = Buy,
40+
MarketAveragePrice.baseAmount = testAdaAmt,
41+
MarketAveragePrice.symbol = adabtc
42+
}
43+
sellRate <-
44+
Bfx.marketAveragePrice
45+
MarketAveragePrice.Request
46+
{ MarketAveragePrice.buyOrSell = Sell,
47+
MarketAveragePrice.baseAmount = testAdaAmt,
48+
MarketAveragePrice.symbol = adabtc
49+
}
50+
buyRate `shouldSatisfy` (> sellRate)
3951
it "marketAveragePrice fails" . const $ do
40-
let amt = testAmt @'Buy
4152
sym <- newCurrencyPair "BTCADA"
42-
res <- tryAny $ Bitfinex.marketAveragePrice amt sym
53+
res <-
54+
tryAny
55+
$ Bfx.marketAveragePrice
56+
MarketAveragePrice.Request
57+
{ MarketAveragePrice.buyOrSell = Sell,
58+
MarketAveragePrice.baseAmount = testAdaAmt,
59+
MarketAveragePrice.symbol = sym
60+
}
4361
res `shouldSatisfy` isLeft
4462
it "feeSummary succeeds" $ \env -> do
45-
res <- tryAny $ Bitfinex.feeSummary env
63+
res <- tryAny $ Bfx.feeSummary env
4664
res `shouldSatisfy` isRight
4765
it "submitOrderMaker and cancelOrderById succeeds" $ \env -> do
48-
let amt = testAmt @'Buy
49-
let opts = SubmitOrder.optsPostOnly
50-
sym <- newCurrencyPair "ADABTC"
51-
curRate <- Bitfinex.marketAveragePrice amt sym
52-
rate <- (* 0.5) <$> roundQuotePerBase curRate
53-
order <- Bitfinex.submitOrderMaker env amt sym rate opts
54-
res <- tryAny . Bitfinex.cancelOrderById env $ orderId order
66+
curRate <-
67+
Bfx.marketAveragePrice
68+
MarketAveragePrice.Request
69+
{ MarketAveragePrice.buyOrSell = Buy,
70+
MarketAveragePrice.baseAmount = testAdaAmt,
71+
MarketAveragePrice.symbol = adabtc
72+
}
73+
rate <-
74+
roundQuotePerBase
75+
. QuotePerBase
76+
. (* 0.5)
77+
$ unQuotePerBase curRate
78+
order <-
79+
Bfx.submitOrderMaker
80+
env
81+
SubmitOrder.Request
82+
{ SubmitOrder.buyOrSell = Buy,
83+
SubmitOrder.baseAmount = testAdaAmt,
84+
SubmitOrder.symbol = adabtc,
85+
SubmitOrder.rate = rate,
86+
SubmitOrder.options = SubmitOrder.optsPostOnly
87+
}
88+
res <-
89+
tryAny
90+
. Bfx.cancelOrderById env
91+
$ orderId order
5592
res `shouldSatisfy` isRight
5693
it "retrieveOrders succeeds" $ \env -> do
57-
res <- tryAny . Bitfinex.retrieveOrders env $ GetOrders.optsSym adabtc
94+
res <- tryAny . Bfx.retrieveOrders env $ GetOrders.optsSym adabtc
5895
res `shouldSatisfy` isRight
5996
it "ordersHistory succeeds" $ \env -> do
60-
res <- tryAny . Bitfinex.ordersHistory env $ GetOrders.optsSym adabtc
97+
res <- tryAny . Bfx.ordersHistory env $ GetOrders.optsSym adabtc
6198
res `shouldSatisfy` isRight
6299
it "getOrders succeeds" $ \env -> do
63-
res <- tryAny . Bitfinex.getOrders env $ GetOrders.optsSym adabtc
100+
res <- tryAny . Bfx.getOrders env $ GetOrders.optsSym adabtc
64101
res `shouldSatisfy` isRight
65102
it "getOrder fails" $ \env -> do
66-
res <- tryAny . Bitfinex.getOrder env $ OrderId 0
103+
res <- tryAny . Bfx.getOrder env $ OrderId 0
67104
res `shouldSatisfy` isLeft
68105
it "submitCounterOrderMaker fails" $ \env -> do
69106
res <-
70107
tryAny
71-
$ Bitfinex.submitCounterOrderMaker
108+
$ Bfx.submitCounterOrderMaker
72109
env
73110
(OrderId 0)
74-
(Tagged 0.001)
75-
(Tagged 0.001)
76-
(Tagged 0.001)
111+
CounterRates
112+
{ counterRatesEnterBaseFee = FeeRate 0,
113+
counterRatesExitQuoteFee = FeeRate 0,
114+
counterRatesExitQuoteProfit = ProfitRate 0
115+
}
77116
SubmitOrder.optsPostOnly
78117
res `shouldSatisfy` isLeft
79118
it "wallets succeeds" $ \env -> do
80-
res <- tryAny $ Bitfinex.wallets env
119+
res <- tryAny $ Bfx.wallets env
81120
res `shouldSatisfy` isRight
82121
it "netWorth succeeds" $ \env -> do
83-
res <- tryAny . Bitfinex.netWorth env $ CurrencyCode "BTC"
122+
res <- tryAny . Bfx.netWorth env $ CurrencyCode "BTC"
84123
res `shouldSatisfy` isRight
85124
it "candlesLast succeeds" . const $ do
86-
res <- tryAny $ Bitfinex.candlesLast Ctf1h adabtc Candles.optsDef
125+
res <- tryAny $ Bfx.candlesLast Ctf1h adabtc Candles.optsDef
87126
res `shouldSatisfy` isRight
88127
it "candlesHist succeeds" . const $ do
89-
res <- tryAny $ Bitfinex.candlesHist Ctf1h adabtc Candles.optsDef
128+
res <- tryAny $ Bfx.candlesHist Ctf1h adabtc Candles.optsDef
90129
res `shouldSatisfy` isRight
91130

92131
-- describe "End2End" $ do
93132
-- itRight "submitOrderMaker" $ \env -> do
94133
-- let amt = from @(Ratio Natural) 2.002002 :: Money 'Base 'Buy
95134
-- let sym = [currencyPair|ADABTC|]
96135
-- let opts = SubmitOrder.optsPostOnly
97-
-- rate <- Bitfinex.marketAveragePrice amt sym
98-
-- Bitfinex.submitOrderMaker env amt sym rate opts
136+
-- rate <- Bfx.marketAveragePrice amt sym
137+
-- Bfx.submitOrderMaker env amt sym rate opts
99138
-- itRight "submitCounterOrderMaker" $ \env ->
100-
-- Bitfinex.submitCounterOrderMaker
139+
-- Bfx.submitCounterOrderMaker
101140
-- env
102141
-- (OrderId 0)
103142
-- [feeRateMakerBase| 0.001 |]
104143
-- [feeRateMakerQuote| 0.001 |]
105144
-- [profitRate| 0.001 |]
106145
-- SubmitOrder.optsPostOnly
107146
-- focus . itRight "cancelOrderMulti" $ \env ->
108-
-- Bitfinex.cancelOrderMulti
147+
-- Bfx.cancelOrderMulti
109148
-- env
110149
-- CancelOrderMulti.Everything
111150
-- focus . itRight "dumpIntoQuoteMaker" $ \env ->
112-
-- Bitfinex.dumpIntoQuoteMaker
151+
-- Bfx.dumpIntoQuoteMaker
113152
-- env
114153
-- [currencyPair|XLM:BTC|]
115154
-- SubmitOrder.optsPostOnly

0 commit comments

Comments
 (0)