{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RebindableSyntax #-}
module Web.Stripe.Test.Plan where
import Data.Either (Either(..), isRight)
import Test.Hspec
import Web.Stripe.Test.Util (makePlanId)
import Web.Stripe.Test.Prelude
import Web.Stripe.Plan
import Web.Stripe.Customer
planTests :: StripeSpec
planTests stripe = do
describe "Plan tests" $ do
it "Succesfully creates a Plan" $ do
planid <- makePlanId
result <- stripe $ do
p <- createPlan planid
(Amount 0)
USD
Month
(PlanName "sample plan")
void $ deletePlan planid
return p
result `shouldSatisfy` isRight
it "Succesfully deletes a Plan" $ do
planid <- makePlanId
result <- stripe $ do
Plan { planId = pid } <-
createPlan planid
(Amount 0)
USD
Month
(PlanName "sample plan")
void $ deletePlan pid
result `shouldSatisfy` isRight
it "Succesfully updates a Plan" $ do
planid <- makePlanId
result <- stripe $ do
Plan { planId = pid } <-
createPlan planid
(Amount 0)
USD
Month
(PlanName "sample plan")
r <- updatePlan pid
-&- (PlanName "cookie")
-&- (StatementDescription "test")
-&- MetaData [("key","value")]
void $ deletePlan pid
return r
result `shouldSatisfy` isRight
let Right Plan { planMetaData = pm
, planName = pname
, planDescription = pdesc
} = result
pm `shouldBe` (MetaData [("key", "value")])
pname `shouldBe` "cookie"
pdesc `shouldBe` (Just $ StatementDescription "test")
it "Succesfully retrieves a Plan" $ do
planid <- makePlanId
result <- stripe $ do
Plan { planId = pid } <-
createPlan planid
(Amount 0)
USD
Month
(PlanName "sample plan")
r <- getPlan pid
void $ deletePlan pid
return r
result `shouldSatisfy` isRight
it "Succesfully retrieves a list of Plans" $ do
result <- stripe $ void $ getPlans
result `shouldSatisfy` isRight