packages feed

bitx-bitcoin-0.2.0.0: test/Network/Bitcoin/BitX/Spec/Specs/NetSpec.hs

{-# LANGUAGE OverloadedStrings, QuasiQuotes, DataKinds, TemplateHaskell #-}

module Network.Bitcoin.BitX.Spec.Specs.NetSpec
    (
    spec
    ) where

import Test.Hspec
import Network.Bitcoin.BitX.Types
import Network.Bitcoin.BitX.Public
import System.IO.Unsafe (unsafePerformIO)
import Network.Bitcoin.BitX.Response

spec :: Spec
spec = do
  describe "Public BitX connectivity" $ do
    it "getTicker connects to BitX and works" $ do
      connectsAndParsesOkay $ getTicker XBTZAR
    it "getTickers connects to BitX and works" $ do
      connectsAndParsesOkay $ getTickers
    it "getOrderBook connects to BitX and works" $ do
      connectsAndParsesOkay $ getOrderBook XBTZAR
    it "getTrades connects to BitX and works" $ do
      connectsAndParsesOkay $ getTrades XBTKES

connectsAndParsesOkay :: IO (BitXAPIResponse rec) -> Bool
connectsAndParsesOkay = isValidResponse . unsafePerformIO

isValidResponse :: BitXAPIResponse rec -> Bool
isValidResponse (ValidResponse _) = True
isValidResponse        _          = False