From 3ade46de0b9d0eacc974e21bd77d688f6d600eb8 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 11 May 2017 11:33:16 -0400 Subject: [PATCH] FIX: Don't send system message for new user of the month if disabled --- .../grant_new_user_of_the_month_badges.rb | 1 + ...grant_new_user_of_the_month_badges_spec.rb | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/app/jobs/scheduled/grant_new_user_of_the_month_badges.rb b/app/jobs/scheduled/grant_new_user_of_the_month_badges.rb index 7842175fa37..7026bba5ff6 100644 --- a/app/jobs/scheduled/grant_new_user_of_the_month_badges.rb +++ b/app/jobs/scheduled/grant_new_user_of_the_month_badges.rb @@ -8,6 +8,7 @@ module Jobs def execute(args) badge = Badge.find(Badge::NewUserOfTheMonth) + return unless SiteSetting.enable_badges? and badge.enabled? # Don't award it if a month hasn't gone by return if UserBadge.where("badge_id = ? AND granted_at >= ?", diff --git a/spec/jobs/grant_new_user_of_the_month_badges_spec.rb b/spec/jobs/grant_new_user_of_the_month_badges_spec.rb index 748a8343836..547cfaae378 100644 --- a/spec/jobs/grant_new_user_of_the_month_badges_spec.rb +++ b/spec/jobs/grant_new_user_of_the_month_badges_spec.rb @@ -24,6 +24,45 @@ describe Jobs::GrantNewUserOfTheMonthBadges do expect(badge).to be_present end + it "does nothing if badges are disabled" do + SiteSetting.enable_badges = false + + user = Fabricate(:user, created_at: 1.week.ago) + p = Fabricate(:post, user: user) + Fabricate(:post, user: user) + + old_user = Fabricate(:user, created_at: 6.months.ago) + PostAction.act(old_user, p, PostActionType.types[:like]) + old_user = Fabricate(:user, created_at: 6.months.ago) + PostAction.act(old_user, p, PostActionType.types[:like]) + + SystemMessage.any_instance.expects(:create).never + granter.execute({}) + + badge = user.user_badges.where(badge_id: Badge::NewUserOfTheMonth) + expect(badge).to be_blank + end + + it "does nothing if the badge is disabled" do + Badge.find(Badge::NewUserOfTheMonth).update_column(:enabled, false) + + user = Fabricate(:user, created_at: 1.week.ago) + p = Fabricate(:post, user: user) + Fabricate(:post, user: user) + + old_user = Fabricate(:user, created_at: 6.months.ago) + PostAction.act(old_user, p, PostActionType.types[:like]) + old_user = Fabricate(:user, created_at: 6.months.ago) + PostAction.act(old_user, p, PostActionType.types[:like]) + + SystemMessage.any_instance.expects(:create).never + granter.execute({}) + + badge = user.user_badges.where(badge_id: Badge::NewUserOfTheMonth) + expect(badge).to be_blank + end + + it "does nothing if it's been awarded recently" do u0 = Fabricate(:user, created_at: 2.weeks.ago) BadgeGranter.grant(Badge.find(Badge::NewUserOfTheMonth), u0)