stripe-haskell-0.1.4.1: tests/Test/InvoiceItem.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Test.InvoiceItem where
import Data.Either
import Test.Hspec
import Web.Stripe
import Web.Stripe.InvoiceItem
import Web.Stripe.Customer
invoiceItemTests :: StripeConfig -> Spec
invoiceItemTests config = do
describe "Invoice item tests" $ do
it "Succesfully creates an invoice item" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
ii <- createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
it "Succesfully retrieves an existing invoice item" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { invoiceItemId = iid } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
ii <- getInvoiceItem iid
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
it "Succesfully retrieves an existing invoice item expandable" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { invoiceItemId = iid } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
ii <- getInvoiceItemExpandable iid ["customer"]
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
it "Succesfully retrieves invoice items" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
ii <- getInvoiceItems Nothing Nothing Nothing Nothing
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
it "Succesfully retrieves invoice items with expansion" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
ii <- getInvoiceItemsExpandable Nothing Nothing Nothing Nothing ["data.customer"]
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
it "Succesfully updates an existing invoice item" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { invoiceItemId = iid } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
ii <- updateInvoiceItem iid (Just 200) (Just "description") [("some","thing")]
_ <- deleteCustomer cid
return ii
result `shouldSatisfy` isRight
let Right InvoiceItem{..} = result
invoiceItemMetaData `shouldBe` [("some","thing")]
invoiceItemDescription `shouldBe` Just "description"
invoiceItemAmount `shouldBe` 200
it "Succesfully deletes an invoice item" $ do
result <- stripe config $ do
Customer { customerId = cid } <- createEmptyCustomer
InvoiceItem { invoiceItemId = iid } <-
createInvoiceItem cid 100 USD Nothing Nothing (Just "hey") []
result <- deleteInvoiceItem iid
_ <- deleteCustomer cid
return result
result `shouldSatisfy` isRight