mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
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:
parent
d8c2856a4c
commit
8cc49d9797
@ -48,8 +48,9 @@ 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
|
||||||
|
|
||||||
|
@ -14,9 +14,13 @@ class UserBlocker
|
|||||||
|
|
||||||
def block
|
def block
|
||||||
hide_posts
|
hide_posts
|
||||||
@user.blocked = true
|
unless @user.blocked?
|
||||||
if @user.save
|
@user.blocked = true
|
||||||
SystemMessage.create(@user, @opts[:message] || :blocked_by_staff)
|
if @user.save
|
||||||
|
SystemMessage.create(@user, @opts[:message] || :blocked_by_staff)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -111,22 +111,34 @@ 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
|
||||||
subject.punish_user
|
subject.punish_user
|
||||||
expect(Guardian.new(user).can_create_post?(nil)).to be_false
|
expect(Guardian.new(user).can_create_post?(nil)).to be_false
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sends private message to moderators' do
|
it 'sends private message to moderators' do
|
||||||
moderator = Fabricate(:moderator)
|
moderator = Fabricate(:moderator)
|
||||||
GroupMessage.expects(:create).with do |group, msg_type, params|
|
GroupMessage.expects(:create).with do |group, msg_type, params|
|
||||||
group == Group[:moderators].name and msg_type == :user_automatically_blocked and params[:user].id == user.id
|
group == Group[:moderators].name and msg_type == :user_automatically_blocked and params[:user].id == user.id
|
||||||
|
end
|
||||||
|
subject.punish_user
|
||||||
|
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
|
||||||
subject.punish_user
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user