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