diff --git a/app/services/discourse_donations/rewards.rb b/app/services/discourse_donations/rewards.rb index a901dd3..70eba2a 100644 --- a/app/services/discourse_donations/rewards.rb +++ b/app/services/discourse_donations/rewards.rb @@ -16,6 +16,7 @@ module DiscourseDonations end def grant_badge(name) + return unless SiteSetting.enable_badges badge = ::Badge.find_by_name(name) return if badge.nil? BadgeGranter.grant(badge, user) diff --git a/spec/services/discourse_donations/rewards_spec.rb b/spec/services/discourse_donations/rewards_spec.rb index 9daa820..f2ce760 100644 --- a/spec/services/discourse_donations/rewards_spec.rb +++ b/spec/services/discourse_donations/rewards_spec.rb @@ -25,15 +25,27 @@ module DiscourseDonations subject.add_to_group(grp.name) end - it 'grants the user a badge' do - badge = Fabricate(:badge) - BadgeGranter.expects(:grant).with(badge, user) - subject.grant_badge(badge.name) - end + describe '.grant_badge' do + let(:badge) { Fabricate(:badge) } - it 'does not grant the user a badge' do - BadgeGranter.expects(:grant).never - expect(subject.grant_badge('does not exist')).to be_falsy + before { SiteSetting.stubs(:enable_badges).returns(true) } + + it 'grants the user a badge' do + BadgeGranter.expects(:grant).with(badge, user) + subject.grant_badge(badge.name) + end + + it 'does not grant the user a badge when the badge does not exist' do + Badge.stubs(:find_by_name).returns(nil) + BadgeGranter.expects(:grant).never + expect(subject.grant_badge('does not exist')).to be_falsy + end + + it 'does not grant the user a badge when badges are disabled' do + SiteSetting.stubs(:enable_badges).returns(false) + BadgeGranter.expects(:grant).never + subject.grant_badge(badge.name) + end end end end