Don't send more pm's after a user has been blocked from making posts. This can happen if a staff member flags posts that are already hidden.

This commit is contained in:
Neil Lalonde 2013-08-02 10:55:02 -04:00
parent d8c2856a4c
commit 8cc49d9797
4 changed files with 44 additions and 20 deletions

View File

@ -48,10 +48,11 @@ class SpamRulesEnforcer
def punish_user def punish_user
Post.transaction do Post.transaction do
UserBlocker.block(@user, nil, {message: :too_many_spam_flags}) if UserBlocker.block(@user, nil, {message: :too_many_spam_flags})
GroupMessage.create(Group[:moderators].name, :user_automatically_blocked, {user: @user, limit_once_per: false}) GroupMessage.create(Group[:moderators].name, :user_automatically_blocked, {user: @user, limit_once_per: false})
end end
end end
end
end end

View File

@ -14,10 +14,14 @@ class UserBlocker
def block def block
hide_posts hide_posts
unless @user.blocked?
@user.blocked = true @user.blocked = true
if @user.save if @user.save
SystemMessage.create(@user, @opts[:message] || :blocked_by_staff) SystemMessage.create(@user, @opts[:message] || :blocked_by_staff)
end end
else
false
end
end end
def hide_posts def hide_posts

View File

@ -111,9 +111,9 @@ describe SpamRulesEnforcer do
subject.stubs(:block?).returns(true) subject.stubs(:block?).returns(true)
end end
it "blocks the user" do context 'user is not blocked' do
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)) before do
subject.punish_user UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)).returns(true)
end end
it 'prevents the user from making new posts' do it 'prevents the user from making new posts' do
@ -130,6 +130,18 @@ describe SpamRulesEnforcer do
end end
end end
context 'user is already blocked' do
before do
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)).returns(false)
end
it "doesn't send a pm to moderators if the user is already blocked" do
GroupMessage.expects(:create).never
subject.punish_user
end
end
end
describe 'block?' do describe 'block?' do
context 'never been blocked' do context 'never been blocked' do

View File

@ -53,6 +53,13 @@ describe UserBlocker do
SystemMessage.expects(:create).never SystemMessage.expects(:create).never
block_user block_user
end end
it "doesn't send a pm if the user is already blocked" do
user.stubs(:blocked?).returns(true)
SystemMessage.unstub(:create)
SystemMessage.expects(:create).never
block_user.should == false
end
end end
describe 'unblock' do describe 'unblock' do