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
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})
end
end
end
end

View File

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

View File

@ -111,9 +111,9 @@ describe SpamRulesEnforcer do
subject.stubs(:block?).returns(true)
end
it "blocks the user" do
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags))
subject.punish_user
context 'user is not blocked' do
before do
UserBlocker.expects(:block).with(user, nil, has_entries(message: :too_many_spam_flags)).returns(true)
end
it 'prevents the user from making new posts' do
@ -130,6 +130,18 @@ describe SpamRulesEnforcer do
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
context 'never been blocked' do

View File

@ -53,6 +53,13 @@ describe UserBlocker do
SystemMessage.expects(:create).never
block_user
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
describe 'unblock' do