packages feed

stripe-haskell-0.1.4.1: tests/Test/Balance.hs

{-# LANGUAGE OverloadedStrings #-}
module Test.Balance where

import           Control.Monad
import           Data.Either
import           Test.Hspec

import           Web.Stripe
import           Web.Stripe.Balance
import           Web.Stripe.Charge
import           Web.Stripe.Customer

balanceTests :: StripeConfig -> Spec
balanceTests config = do
  describe "Balance tests" $ do
    it "Succesfully retrieves a Balance" $ do
      result <- stripe config getBalance
      result `shouldSatisfy` isRight
    it "Succesfully retrieves a Balance Transaction" $ do
      result <- stripe config $ do
          Customer { customerId = cid } <- createCustomerByCard cn em ey cvc
          Charge { chargeBalanceTransaction = Just txid } <-
            chargeCustomer cid USD 100 Nothing
          balance <- getBalanceTransaction txid
          void $ deleteCustomer cid
          return balance
      result `shouldSatisfy` isRight
    it "Succesfully retrieves an Expanded Balance Transaction" $ do
       result <- stripe config $ do
          Customer { customerId = cid } <- createCustomerByCard cn em ey cvc
          Charge   { chargeBalanceTransaction = Just txid
                   } <- chargeCustomer cid USD 100 Nothing
          result <- getBalanceTransactionExpandable txid ["source"]
          void $ deleteCustomer cid
          return result
       result `shouldSatisfy` isRight
    it "Succesfully retrieves Balance Transaction History" $ do
      result <- stripe config $ getBalanceTransactionHistory Nothing Nothing Nothing
      result `shouldSatisfy` isRight
  where
    cn  = CardNumber "4242424242424242"
    em  = ExpMonth 12
    ey  = ExpYear 2015
    cvc = CVC "123"