mirror of
https://github.com/discourse/discourse-subscriptions.git
synced 2025-07-05 14:02:11 +00:00
add the user to a group
This commit is contained in:
parent
1c87a87bd6
commit
061ea69434
@ -18,10 +18,12 @@ module DiscourseDonations
|
|||||||
|
|
||||||
if reward_user?(payment)
|
if reward_user?(payment)
|
||||||
reward = DiscourseDonations::Rewards.new(current_user)
|
reward = DiscourseDonations::Rewards.new(current_user)
|
||||||
group_name = SiteSetting.discourse_donations_reward_group_name
|
|
||||||
if reward.add_to_group(group_name)
|
if reward.add_to_group(group_name)
|
||||||
response['rewards'] << { type: :group, name: group_name }
|
response['rewards'] << { type: :group, name: group_name }
|
||||||
end
|
end
|
||||||
|
if reward.grant_badge(badge_name)
|
||||||
|
response['rewards'] << { type: :badge, name: badge_name }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
render :json => response
|
render :json => response
|
||||||
@ -33,6 +35,14 @@ module DiscourseDonations
|
|||||||
payment.present? && payment.successful? && current_user.present?
|
payment.present? && payment.successful? && current_user.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def group_name
|
||||||
|
SiteSetting.discourse_donations_reward_group_name
|
||||||
|
end
|
||||||
|
|
||||||
|
def badge_name
|
||||||
|
SiteSetting.discourse_donations_reward_badge_name
|
||||||
|
end
|
||||||
|
|
||||||
def secret_key
|
def secret_key
|
||||||
SiteSetting.discourse_donations_secret_key
|
SiteSetting.discourse_donations_secret_key
|
||||||
end
|
end
|
||||||
|
@ -7,10 +7,15 @@ module DiscourseDonations
|
|||||||
end
|
end
|
||||||
|
|
||||||
def add_to_group(name)
|
def add_to_group(name)
|
||||||
group = ::Group.find_by_name(name)
|
grp = ::Group.find_by_name(name)
|
||||||
return false if group.nil?
|
return if grp.nil?
|
||||||
group.add(@user)
|
grp.add(@user)
|
||||||
group.present?
|
end
|
||||||
|
|
||||||
|
def grant_badge(name)
|
||||||
|
badge = ::Badge.find_by_name(name)
|
||||||
|
return if badge.nil?
|
||||||
|
BadgeGranter.grant(badge, @user)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -15,7 +15,7 @@ plugins:
|
|||||||
discourse_donations_hide_zip_code:
|
discourse_donations_hide_zip_code:
|
||||||
default: true
|
default: true
|
||||||
client: true
|
client: true
|
||||||
discourse_donations_reward_badge:
|
discourse_donations_reward_badge_name:
|
||||||
client: false
|
client: false
|
||||||
default: 'Donation'
|
default: 'Donation'
|
||||||
discourse_donations_reward_group_name:
|
discourse_donations_reward_group_name:
|
||||||
|
@ -29,12 +29,15 @@ module DiscourseDonations
|
|||||||
|
|
||||||
describe 'rewards' do
|
describe 'rewards' do
|
||||||
let(:group_name) { 'Zasch' }
|
let(:group_name) { 'Zasch' }
|
||||||
|
let(:badge_name) { 'Beanie' }
|
||||||
let(:response_rewards) { JSON.parse(response.body)['rewards'] }
|
let(:response_rewards) { JSON.parse(response.body)['rewards'] }
|
||||||
let(:stripe) { ::Stripe::Charge }
|
let(:stripe) { ::Stripe::Charge }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name)
|
SiteSetting.stubs(:discourse_donations_reward_group_name).returns(group_name)
|
||||||
|
SiteSetting.stubs(:discourse_donations_reward_badge_name).returns(badge_name)
|
||||||
Fabricate(:group, name: SiteSetting.discourse_donations_reward_group_name)
|
Fabricate(:group, name: SiteSetting.discourse_donations_reward_group_name)
|
||||||
|
Fabricate(:badge, name: SiteSetting.discourse_donations_reward_badge_name)
|
||||||
log_in :coding_horror
|
log_in :coding_horror
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -46,7 +49,12 @@ module DiscourseDonations
|
|||||||
|
|
||||||
it 'awards a group' do
|
it 'awards a group' do
|
||||||
post :create
|
post :create
|
||||||
expect(response_rewards.first).to eq({'type' => 'group', 'name' => group_name})
|
expect(response_rewards).to include({'type' => 'group', 'name' => group_name})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'awards a badge' do
|
||||||
|
post :create
|
||||||
|
expect(response_rewards).to include({'type' => 'badge', 'name' => badge_name})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -9,14 +9,24 @@ module DiscourseDonations
|
|||||||
it 'adds the user to a group' do
|
it 'adds the user to a group' do
|
||||||
Group.expects(:find_by_name).with(grp.name).returns(grp)
|
Group.expects(:find_by_name).with(grp.name).returns(grp)
|
||||||
grp.expects(:add).with(user)
|
grp.expects(:add).with(user)
|
||||||
expect(subject.add_to_group(grp.name)).to eq true
|
subject.add_to_group(grp.name)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not add the user to a group' do
|
it 'does not add the user to a group' do
|
||||||
Group.expects(:find_by_name).with(grp.name).returns(nil)
|
Group.expects(:find_by_name).with(grp.name).returns(nil)
|
||||||
expect(subject.add_to_group(grp.name)).to eq false
|
grp.expects(:add).never
|
||||||
|
expect(subject.add_to_group(grp.name)).to be_falsy
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'grants the user a badge'
|
it 'grants the user a badge' do
|
||||||
|
badge = Fabricate(:badge)
|
||||||
|
BadgeGranter.expects(:grant).with(badge, user)
|
||||||
|
subject.grant_badge(badge.name)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not grant the user a badge' do
|
||||||
|
BadgeGranter.expects(:grant).never
|
||||||
|
expect(subject.grant_badge('does not exist')).to be_falsy
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user