diff --git a/app/models/post_alert_observer.rb b/app/models/post_alert_observer.rb index e5763c6e3..141ae363b 100644 --- a/app/models/post_alert_observer.rb +++ b/app/models/post_alert_observer.rb @@ -63,8 +63,8 @@ class PostAlertObserver < ActiveRecord::Observer post.topic.all_allowed_users.reject{ |a| a.id == post.user_id }.each do |a| create_notification(a, Notification.types[:private_message], post) end - else - # If it's not a private message, notify the users + elsif post.post_type != Post.types[:moderator_action] + # If it's not a private message and it's not an automatic post caused by a moderator action, notify the users notify_post_users(post) end end diff --git a/spec/models/post_alert_observer_spec.rb b/spec/models/post_alert_observer_spec.rb index a3359dc92..50f7beed5 100644 --- a/spec/models/post_alert_observer_spec.rb +++ b/spec/models/post_alert_observer_spec.rb @@ -108,4 +108,16 @@ describe PostAlertObserver do end + context 'moderator action post' do + let(:user) { Fabricate(:user) } + let(:first_post) { Fabricate(:post, user: user, raw: 'A useless post for you.')} + let(:topic) { first_post.topic } + + it 'should not notify anyone' do + expect { + Fabricate(:post, topic: topic, raw: 'This topic is CLOSED', post_type: Post.types[:moderator_action]) + }.to_not change { Notification.count } + end + end + end