From 4fdfc2665d4d6b892e59e6c412b82d9d9894c6d9 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 14 Jan 2020 14:39:20 +0000 Subject: [PATCH] FIX: Update featured badge ranking when mass-awarding badges Follow-up to cff6e941de7e7ccbeb0835b234f42b904441a5fa --- app/services/badge_granter.rb | 2 ++ spec/jobs/mass_award_badge_spec.rb | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/app/services/badge_granter.rb b/app/services/badge_granter.rb index 783e53fcf69..f5b31484575 100644 --- a/app/services/badge_granter.rb +++ b/app/services/badge_granter.rb @@ -28,6 +28,8 @@ class BadgeGranter user_id: user.id, badge_id: badge.id ) + + UserBadge.update_featured_ranks!(user.id) end end diff --git a/spec/jobs/mass_award_badge_spec.rb b/spec/jobs/mass_award_badge_spec.rb index 67571abee49..b617a2e49b6 100644 --- a/spec/jobs/mass_award_badge_spec.rb +++ b/spec/jobs/mass_award_badge_spec.rb @@ -28,5 +28,16 @@ describe Jobs::MassAwardBadge do expect(Notification.exists?(user: user)).to eq(true) expect(UserBadge.where.not(notification_id: nil).exists?(user: user, badge: badge)).to eq(true) end + + it 'updates badge ranks correctly' do + user_2 = Fabricate(:user) + + UserBadge.create!(badge_id: Badge::Member, user: user, granted_by: Discourse.system_user, granted_at: Time.now) + + subject.execute(user_emails: [user.email, user_2.email], badge_id: badge.id) + + expect(UserBadge.find_by(user: user, badge: badge).featured_rank).to eq(2) + expect(UserBadge.find_by(user: user_2, badge: badge).featured_rank).to eq(1) + end end end