deletes the customer on subscription cancel

This commit is contained in:
Rimian Perkins 2020-01-14 23:38:26 +11:00
parent 190ca28089
commit dca6c7ddc9
2 changed files with 36 additions and 11 deletions

View File

@ -21,7 +21,6 @@ module DiscourseSubscriptions
return
end
# Handle the event
case event[:type]
when 'customer.subscription.deleted'
@ -32,16 +31,13 @@ module DiscourseSubscriptions
if customer
customer.delete
user = ::User.find(customer.user_id)
group = plan_group(event[:plan])
group.remove(user) if group
#
# binding.pry
#
# user = ::User.find(customer.user_id)
# group = plan_group(event[:plan])
# group.remove(user) if group
end
else
# Unexpected event type
status 400
return
end
head 200

View File

@ -10,15 +10,44 @@ module DiscourseSubscriptions
it "contructs a webhook event" do
payload = 'we-want-a-shrubbery'
headers = { 'HTTP_STRIPE_SIGNATURE' => 'stripe-webhook-signature' }
headers = { HTTP_STRIPE_SIGNATURE: 'stripe-webhook-signature' }
::Stripe::Webhook
.expects(:construct_event)
.with('we-want-a-shrubbery', 'stripe-webhook-signature', 'zascharoo')
.returns(type: 'something')
post "/s/hooks.json", params: payload, headers: headers
expect(response.status).to eq 200
end
it "cancels a subscription" do
user = Fabricate(:user)
group = Fabricate(:group, name: 'subscribers-group')
customer = Fabricate(
:customer,
customer_id: 'c_575768',
product_id: 'p_8654',
user_id: user.id
)
event = {
type: 'customer.subscription.deleted',
customer: customer.customer_id,
plan: { product: customer.product_id, metadata: { group_name: group.name } }
}
::Stripe::Webhook
.expects(:construct_event)
.returns(event)
expect {
post "/s/hooks.json"
}.to change { DiscourseSubscriptions::Customer.count }.by(-1)
expect(response.status).to eq 200
end
end
end