user removed from the group in admin
This commit is contained in:
parent
7580b68711
commit
3b7ff90672
|
@ -4,7 +4,7 @@ module DiscoursePatrons
|
|||
module Admin
|
||||
class SubscriptionsController < ::Admin::AdminController
|
||||
include DiscoursePatrons::Stripe
|
||||
|
||||
include DiscoursePatrons::Group
|
||||
before_action :set_api_key
|
||||
|
||||
def index
|
||||
|
@ -22,11 +22,17 @@ module DiscoursePatrons
|
|||
subscription = ::Stripe::Subscription.delete(params[:id])
|
||||
|
||||
customer = DiscoursePatrons::Customer.find_by(
|
||||
product_id: subscription[:plan][:product][:id],
|
||||
product_id: subscription[:plan][:product],
|
||||
customer_id: subscription[:customer]
|
||||
)
|
||||
|
||||
customer.delete if customer
|
||||
if customer
|
||||
customer.delete
|
||||
|
||||
user = ::User.find(customer.user_id)
|
||||
group = plan_group(subscription[:plan])
|
||||
group.remove(user) if group
|
||||
end
|
||||
|
||||
render_json_dump subscription
|
||||
|
||||
|
|
|
@ -36,24 +36,59 @@ module DiscoursePatrons
|
|||
end
|
||||
|
||||
describe "destroy" do
|
||||
let(:group) { Fabricate(:group, name: 'subscribers') }
|
||||
|
||||
before do
|
||||
DiscoursePatrons::Customer.create(
|
||||
user_id: user.id,
|
||||
customer_id: 'c_123',
|
||||
product_id: 'pr_34578'
|
||||
)
|
||||
|
||||
group.add(user)
|
||||
end
|
||||
|
||||
it "deletes a customer" do
|
||||
::Stripe::Subscription
|
||||
.expects(:delete)
|
||||
.with('sub_12345')
|
||||
.returns(customer: 'c_123', plan: { product: { id: 'pr_34578' } })
|
||||
.returns(
|
||||
plan: { product: 'pr_34578' },
|
||||
customer: 'c_123'
|
||||
)
|
||||
|
||||
expect {
|
||||
delete "/patrons/admin/subscriptions/sub_12345.json"
|
||||
}.to change { DiscoursePatrons::Customer.count }.by(-1)
|
||||
end
|
||||
|
||||
it "removes the user from the group" do
|
||||
::Stripe::Subscription
|
||||
.expects(:delete)
|
||||
.with('sub_12345')
|
||||
.returns(
|
||||
plan: { product: 'pr_34578', metadata: { group_name: 'subscribers' } },
|
||||
customer: 'c_123'
|
||||
)
|
||||
|
||||
expect {
|
||||
delete "/patrons/admin/subscriptions/sub_12345.json"
|
||||
}.to change { user.groups.count }.by(-1)
|
||||
end
|
||||
|
||||
it "does not remove the user from the group" do
|
||||
::Stripe::Subscription
|
||||
.expects(:delete)
|
||||
.with('sub_12345')
|
||||
.returns(
|
||||
plan: { product: 'pr_34578', metadata: { group_name: 'group_does_not_exist' } },
|
||||
customer: 'c_123'
|
||||
)
|
||||
|
||||
expect {
|
||||
delete "/patrons/admin/subscriptions/sub_12345.json"
|
||||
}.not_to change { user.groups.count }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue