{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RebindableSyntax #-} module Web.Stripe.Test.Transfer where import Data.Maybe import Data.Either import Data.String import Web.Stripe.Test.Prelude import Web.Stripe.Recipient import Web.Stripe.Transfer ------------------------------------------------------------------------------ -- the tests transferTests :: StripeSpec transferTests stripe = describe "Transfer tests" $ do it "Create a new transfer" $ do result <- stripe $ do Recipient { recipientId = rid } <- createRecipient name Individual -&- bankinfo transfer <- createTransfer rid (Amount 100) USD void $ deleteRecipient rid return transfer result `shouldSatisfy` isRight it "Retrieves a transfer" $ do result <- stripe $ do Recipient { recipientId = rid } <- createRecipient name Individual -&- bankinfo Transfer { transferId = tid } <- createTransfer rid (Amount 100) USD t <- getTransfer tid void $ deleteRecipient rid return t result `shouldSatisfy` isRight it "Retrieves a transfer expandable" $ do result <- stripe $ do Recipient { recipientId = rid } <- createRecipient name Individual -&- bankinfo Transfer { transferId = tid } <- createTransfer rid (Amount 100) USD t <- getTransfer tid -&- ExpandParams ["recipient", "balance_transaction"] void $ deleteRecipient rid return t result `shouldSatisfy` isRight it "Retrieves transfers" $ do result <- stripe $ do t <- getTransfers return t result `shouldSatisfy` isRight it "Retrieves transfers expandable" $ do result <- stripe $ do t <- getTransfers -&- ExpandParams [ "data.recipient" , "data.balance_transaction" ] return t result `shouldSatisfy` isRight it "Updates a transfer" $ do result <- stripe $ do Recipient { recipientId = rid } <- createRecipient name Individual -&- bankinfo Transfer { transferId = tid } <- createTransfer rid (Amount 100) USD t <- updateTransfer tid -&- (Description "hey there") -&- (MetaData [("hey", "there")]) void $ deleteRecipient rid return t result `shouldSatisfy` isRight let Right Transfer {..} = result transferMetaData `shouldBe` (MetaData [("hey", "there")]) transferDescription `shouldBe` (Just (Description "hey there")) it "Can't Cancel a committed transfer" $ do result <- stripe $ do Recipient { recipientId = rid } <- createRecipient name Individual -&- bankinfo Transfer { transferId = tid } <- createTransfer rid (Amount 100) USD t <- cancelTransfer tid void $ deleteRecipient rid return t result `shouldSatisfy` isLeft where country = Country "US" routingnumber = RoutingNumber "110000000" accountnumber = AccountNumber "000123456789" name = Name "David Johnson" bankinfo = NewBankAccount country routingnumber accountnumber