From 298e70b32a4d2e36372c3447d4c025dd7014db4f Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Thu, 28 Nov 2019 20:44:38 +1100 Subject: [PATCH] delete customer record --- .../admin/subscriptions_controller.rb | 7 +++++++ ...lugins-discourse-patrons-subscriptions.hbs | 2 ++ .../admin/subscriptions_controller_spec.rb | 21 ++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/subscriptions_controller.rb b/app/controllers/admin/subscriptions_controller.rb index 88046cd..8666a2e 100644 --- a/app/controllers/admin/subscriptions_controller.rb +++ b/app/controllers/admin/subscriptions_controller.rb @@ -21,6 +21,13 @@ module DiscoursePatrons begin subscription = ::Stripe::Subscription.delete(params[:id]) + customer = DiscoursePatrons::Customer.find_by( + product_id: subscription[:plan][:product][:id], + customer_id: subscription[:customer] + ) + + customer.delete if customer + render_json_dump subscription rescue ::Stripe::InvalidRequestError => e diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs index d955732..f19200d 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons-subscriptions.hbs @@ -3,6 +3,7 @@ {{i18n 'discourse_patrons.admin.subscriptions.subscription.user'}} + {{i18n 'discourse_patrons.admin.subscriptions.subscription.subscription_id'}} {{i18n 'discourse_patrons.admin.subscriptions.subscription.customer'}} {{i18n 'discourse_patrons.admin.subscriptions.subscription.product'}} {{i18n 'discourse_patrons.admin.subscriptions.subscription.plan'}} @@ -20,6 +21,7 @@ {{/if}} + {{subscription.id}} {{subscription.customer}} {{subscription.plan.product.name}} {{subscription.plan.nickname}} diff --git a/spec/requests/admin/subscriptions_controller_spec.rb b/spec/requests/admin/subscriptions_controller_spec.rb index 2fb5aaf..6b7588c 100644 --- a/spec/requests/admin/subscriptions_controller_spec.rb +++ b/spec/requests/admin/subscriptions_controller_spec.rb @@ -22,6 +22,7 @@ module DiscoursePatrons end context 'authenticated' do + let(:user) { Fabricate(:user) } let(:admin) { Fabricate(:admin) } before { sign_in(admin) } @@ -35,9 +36,23 @@ module DiscoursePatrons end describe "destroy" do - it "deletes a subscription" do - ::Stripe::Subscription.expects(:delete).with('sub_12345') - delete "/patrons/admin/subscriptions/sub_12345.json" + before do + DiscoursePatrons::Customer.create( + user_id: user.id, + customer_id: 'c_123', + product_id: 'pr_34578' + ) + end + + it "deletes a customer" do + ::Stripe::Subscription + .expects(:delete) + .with('sub_12345') + .returns(customer: 'c_123', plan: { product: { id: 'pr_34578' } }) + + expect { + delete "/patrons/admin/subscriptions/sub_12345.json" + }.to change { DiscoursePatrons::Customer.count }.by(-1) end end end