gdax-0.6.0.0: test/Network/GDAX/Test/Private.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Network.GDAX.Test.Private
( tests
) where
import Control.Lens
import qualified Data.HashMap.Strict as Map
import qualified Data.Vector.Generic as V
import Network.GDAX.Explicit
import Network.GDAX.Test.Types
import Test.Tasty
import Test.Tasty.HUnit
tests :: Env -> TestTree
tests e = testGroup "private"
[ case_viewAccounts e
, case_listPaymentMethods e
, case_listCoinbaseAccounts e
, case_useCoinbaseAccount e
]
case_viewAccounts :: Env -> TestTree
case_viewAccounts e = testCaseSteps "view_account" $ \step -> do
step "listAccounts"
accounts <- listAccounts (e ^. sandbox)
step "getAccounts (indavidually for each)"
_singles <- mapM (getAccount (e ^. sandbox) . _accountId) accounts
step "getAccountHistory (indavidually for each)"
_histories <- mapM (getAccountHistory (e ^. sandbox) . _accountId) accounts
return ()
case_listPaymentMethods :: Env -> TestTree
case_listPaymentMethods e = testCase "list_payment_methods" $ do
_methods <- listPaymentMethods (e ^. sandbox)
return ()
case_listCoinbaseAccounts :: Env -> TestTree
case_listCoinbaseAccounts e = testCase "list_coinbase_accounts" $ do
_cbaseAccounts <- listCoinbaseAccounts (e ^. sandbox)
return ()
case_useCoinbaseAccount :: Env -> TestTree
case_useCoinbaseAccount e = testCaseSteps "use_coinbase_account" $ \step -> do
step "Get account list."
accountMap <- getAccountMap
let (Just usd) = Map.lookup "USD Wallet" accountMap
(Just btc) = Map.lookup "Fake" accountMap
step "Make USD deposit."
_rDepositUSD <- depositCoinbase gdax (CoinbaseDeposit 10000 "USD" (_cbaccountId usd))
step "Make BTC deposit."
_rDepositBTC <- depositCoinbase gdax (CoinbaseDeposit 10 "BTC" (_cbaccountId btc))
step "Make USD withdraw."
_rWithdrawUSD <- withdrawCoinbase gdax (CoinbaseWithdraw 10000 "USD" (_cbaccountId usd))
step "Make BTC withdraw."
_rWithdrawBTC <- withdrawCoinbase gdax (CoinbaseWithdraw 10 "BTC" (_cbaccountId btc))
return ()
where
gdax = e ^. sandbox
getAccountMap = Map.fromList . V.toList . fmap (\a -> (_cbaccountName a, a)) <$> listCoinbaseAccounts gdax