module Web.Stripe.Test.Coupon where
import Data.Either
import Test.Hspec
import Web.Stripe.Test.Prelude
import Web.Stripe.Test.Util
import Web.Stripe.Coupon
couponTests :: StripeSpec
couponTests stripe = do
describe "Coupon tests" $ do
it "Succesfully create a coupon" $ do
couponName <- makeCouponId
result <- stripe $ do
c@(Coupon { couponId = cid }) <-
createCoupon (Just couponName) Once
-&- (AmountOff 1)
-&- USD
void $ deleteCoupon cid
return c
result `shouldSatisfy` isRight
it "Succesfully retrieve a coupon" $ do
couponName <- makeCouponId
result <- stripe $ do
Coupon { couponId = cid } <-
createCoupon (Just couponName)
Once
-&- (AmountOff 1)
-&- USD
res <- getCoupon cid
void $ deleteCoupon cid
return res
result `shouldSatisfy` isRight
it "Succesfully delete a coupon" $ do
couponName <- makeCouponId
result <- stripe $ do
Coupon { couponId = cid } <- createCoupon
(Just couponName)
Once
-&- (AmountOff 1)
-&- USD
void $ deleteCoupon cid
result `shouldSatisfy` isRight
it "Succesfully update a coupon" $ do
couponName <- makeCouponId
result <- stripe $ do
Coupon { couponId = cid } <- createCoupon
(Just couponName)
Once
-&-(AmountOff 1)
-&- USD
r <- updateCoupon cid -&- MetaData [("hi", "there")]
void $ deleteCoupon cid
return r
result `shouldSatisfy` isRight
let Right (Coupon { couponMetaData = cmd }) = result
cmd `shouldBe` (MetaData [("hi", "there")])
it "Succesfully retrieves all coupons" $ do
result <- stripe $ do void $ getCoupons
result `shouldSatisfy` isRight