{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RebindableSyntax #-} module Web.Stripe.Test.Discount where import Data.Either import Test.Hspec import Web.Stripe.Test.Util import Web.Stripe.Test.Prelude import Web.Stripe.Coupon import Web.Stripe.Customer import Web.Stripe.Discount import Web.Stripe.Plan import Web.Stripe.Subscription discountTests :: StripeSpec discountTests stripe = do describe "Discount tests" $ do it "Succesfully deletes a discount from a Customer" $ do coupon <- makeCouponId result <- stripe $ do Coupon { couponId = couponid } <- createCoupon (Just coupon) Once -&- (AmountOff 1) -&- USD Customer { customerId = customerid } <- createCustomer -&- couponid r <- deleteCustomerDiscount customerid c <- getCustomer customerid void $ deleteCustomer customerid void $ deleteCoupon couponid return (r,c) result `shouldSatisfy` isRight let Right (_, Customer{..}) = result customerDiscount `shouldBe` Nothing it "Succesfully deletes a discount from a Subscription" $ do coupon <- makeCouponId plan <- makePlanId result <- stripe $ do Plan { planId = planid } <- createPlan plan (Amount 0) -- free plan USD Month (PlanName "sample plan") Coupon { couponId = couponid } <- createCoupon (Just coupon) Once -&- (AmountOff 1) -&- USD Customer { customerId = customerid } <- createCustomer -&- coupon Subscription { subscriptionId = sid } <- createSubscription customerid plan void $ updateSubscription customerid sid -&- coupon result <- deleteSubscriptionDiscount customerid sid void $ deletePlan planid void $ deleteCustomer customerid void $ deleteCoupon couponid return result result `shouldSatisfy` isRight