delete subscription

This commit is contained in:
Rimian Perkins 2019-10-29 14:35:07 +11:00
parent 2a985ae554
commit ee0901aeca
4 changed files with 30 additions and 3 deletions

View File

@ -11,7 +11,7 @@ module DiscoursePatrons
customer = DiscoursePatrons::Customer.find_user(current_user)
if customer.present?
subscriptions = ::Stripe::Subscription.list(customer: customer.customer_id)
subscriptions = ::Stripe::Subscription.list(customer: customer.customer_id).data
else
subscriptions = []
end
@ -49,6 +49,17 @@ module DiscoursePatrons
end
end
def destroy
begin
subscription = ::Stripe::Subscription.delete(params[:id])
render_json_dump subscription
rescue ::Stripe::InvalidRequestError => e
return render_json_error e.message
end
end
private
def plan_group(plan)

View File

@ -14,7 +14,11 @@ const Subscription = Discourse.Model.extend({
};
return ajax("/patrons/subscriptions", { method: "post", data });
}
},
destroy() {
return ajax(`/patrons/subscriptions/${this.id}`, { method: "delete" });
},
});
Subscription.reopenClass({

View File

@ -17,7 +17,7 @@ DiscoursePatrons::Engine.routes.draw do
resources :patrons, only: [:index, :create]
resources :plans, only: [:index]
resources :products, only: [:index]
resources :subscriptions, only: [:index, :create]
resources :subscriptions, only: [:index, :create, :destroy]
get '/' => 'patrons#index'
get '/subscribe' => 'patrons#index'

View File

@ -10,6 +10,11 @@ module DiscoursePatrons
::Stripe::Subscription.expects(:create).never
post "/patrons/subscriptions.json", params: { plan: 'plan_1234', customer: 'cus_1234' }
end
it "does not destroy a subscription" do
::Stripe::Subscription.expects(:delete).never
patch "/patrons/subscriptions/sub_12345.json"
end
end
context "authenticated" do
@ -120,6 +125,13 @@ module DiscoursePatrons
end
end
end
describe "delete" do
it "deletes a subscription" do
::Stripe::Subscription.expects(:delete).with('sub_12345')
delete "/patrons/subscription/sub_12345.json"
end
end
end
end
end