packages feed

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

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

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

import Test.Hspec
import Network.Bitcoin.BitX
import Record

spec :: Spec
spec = do
  describe "PostEncode test" $ do
    it "OrderRequest is post-encoded properly" $ do
        postEncode
          ([record|
            {pair = XBTZAR,
             type = BID,
             volume = 83.02,
             price = 15.23 } |] :: OrderRequest)
      `shouldBe`
        [("pair", "XBTZAR"),
         ("type", "BID"),
         ("volume", "83.02"),
         ("price", "15.23")]
    it "Asset is post-encoded properly" $ do
        postEncode ZAR
      `shouldBe`
        [("asset", "ZAR")]
    it "NewWithdrawal is post-encoded properly" $ do
        postEncode
          ([record|
            {type = ZAR_EFT,
             amount = 83.02} |] :: NewWithdrawal)
      `shouldBe`
        [("type", "ZAR_EFT"),
         ("amount", "83.02")]
    it "BitcoinSendRequest is post-encoded properly" $ do
        postEncode
          ([record|
            {amount = 83.02,
             currency = XBT,
             address = "ahglk98aslfk",
             description = Just "Send some coinz to dis ere dude.",
             message = Just "Dude, ere'z your coinz."} |] :: BitcoinSendRequest)
      `shouldBe`
        [("amount", "83.02"),
         ("currency", "XBT"),
         ("address", "ahglk98aslfk"),
         ("description", "Send some coinz to dis ere dude."),
         ("message", "Dude, ere'z your coinz.")]
    it "QuoteRequest is post-encoded properly" $ do
        postEncode
          ([record|
            {type = BUY,
             pair = XBTKES,
             baseAmount = 566.76} |] :: QuoteRequest)
      `shouldBe`
        [("type", "BUY"),
         ("pair", "XBTKES"),
         ("base_amount", "566.76")]