FIX: Don't send system message for new user of the month if disabled

This commit is contained in:
Robin Ward 2017-05-11 11:33:16 -04:00
parent 01d2685c60
commit 3ade46de0b
2 changed files with 40 additions and 0 deletions

View File

@ -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 >= ?",

View File

@ -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)