FIX: check if BasicBadge is enabled for TL1 welcome message (#13983)

In 2018 check was added that TL1 welcome message is sent unless user already has BasicBadge granted.

I think we should also check if BasicBadge is even enabled. Otherwise, each time group is assigned to a user and trust level is recalculated, they will receive a welcome message.
This commit is contained in:
Krzysztof Kotlarek 2021-08-11 08:39:25 +10:00 committed by GitHub
parent bdcb96ad1b
commit 195f7346ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View File

@ -26,7 +26,9 @@ class Promotion
def review_tl0
if Promotion.tl1_met?(@user) && change_trust_level!(TrustLevel[1])
@user.enqueue_member_welcome_message unless @user.badges.where(id: Badge::BasicUser).count > 0
if Badge.exists?(id: Badge::BasicUser, enabled: true) && !@user.badges.exists?(id: Badge::BasicUser)
@user.enqueue_member_welcome_message
end
return true
end
false

View File

@ -95,6 +95,17 @@ describe Promotion do
expect(Jobs::SendSystemMessage.jobs.length).to eq(0)
end
it "does not not send when the tl1 badge is disabled" do
SiteSetting.send_tl1_welcome_message = true
Badge.find(1).update!(enabled: false)
stat = user.user_stat
stat.topics_entered = SiteSetting.tl1_requires_topics_entered
stat.posts_read_count = SiteSetting.tl1_requires_read_posts
stat.time_read = SiteSetting.tl1_requires_time_spent_mins * 60
Promotion.recalculate(user)
expect(Jobs::SendSystemMessage.jobs.length).to eq(0)
end
it "can be turned off" do
SiteSetting.send_tl1_welcome_message = false
@result = promotion.review