From d5c10de4c6f0b8d71ff2b32ed96ff6f1846bbf1a Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Mon, 24 Apr 2017 12:49:36 +1000 Subject: [PATCH] log adding the user to a group --- app/services/discourse_donations/rewards.rb | 12 ++++++++++-- spec/services/discourse_donations/rewards_spec.rb | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/services/discourse_donations/rewards.rb b/app/services/discourse_donations/rewards.rb index 83f7983..a901dd3 100644 --- a/app/services/discourse_donations/rewards.rb +++ b/app/services/discourse_donations/rewards.rb @@ -2,6 +2,8 @@ module DiscourseDonations class Rewards + attr_reader :user + def initialize(user) @user = user end @@ -9,13 +11,19 @@ module DiscourseDonations def add_to_group(name) grp = ::Group.find_by_name(name) return if grp.nil? - grp.add(@user) + log_group_add(grp) + grp.add(user) end def grant_badge(name) badge = ::Badge.find_by_name(name) return if badge.nil? - BadgeGranter.grant(badge, @user) + BadgeGranter.grant(badge, user) + end + + def log_group_add(grp) + system_user = User.find(-1) + GroupActionLogger.new(system_user, grp).log_add_user_to_group(user) end end end diff --git a/spec/services/discourse_donations/rewards_spec.rb b/spec/services/discourse_donations/rewards_spec.rb index cb6af03..9daa820 100644 --- a/spec/services/discourse_donations/rewards_spec.rb +++ b/spec/services/discourse_donations/rewards_spec.rb @@ -9,15 +9,22 @@ module DiscourseDonations it 'adds the user to a group' do Group.expects(:find_by_name).with(grp.name).returns(grp) grp.expects(:add).with(user) + subject.expects(:log_group_add).once subject.add_to_group(grp.name) end it 'does not add the user to a group' do Group.expects(:find_by_name).with(grp.name).returns(nil) grp.expects(:add).never + subject.expects(:log_group_add).never expect(subject.add_to_group(grp.name)).to be_falsy end + it 'logs the group add' do + GroupActionLogger.any_instance.expects(:log_add_user_to_group) + subject.add_to_group(grp.name) + end + it 'grants the user a badge' do badge = Fabricate(:badge) BadgeGranter.expects(:grant).with(badge, user)