FIX: don't trigger 'flag_reviewed' when no flags were reviewed

This commit is contained in:
Régis Hanol 2018-08-16 18:11:29 +02:00
parent edf26a0931
commit 93201d8dbe
3 changed files with 45 additions and 15 deletions
app/models
spec

@ -165,8 +165,11 @@ class PostAction < ActiveRecord::Base
end
DiscourseEvent.trigger(:confirmed_spam_post, post) if trigger_spam
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_agreed, actions.first) if actions.first.present?
if actions.first.present?
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_agreed, actions.first)
end
update_flagged_posts_count
end
@ -199,8 +202,11 @@ class PostAction < ActiveRecord::Base
end
Post.with_deleted.where(id: post.id).update_all(cached)
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_disagreed, actions.first) if actions.first.present?
if actions.first.present?
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_disagreed, actions.first)
end
update_flagged_posts_count
end
@ -218,8 +224,11 @@ class PostAction < ActiveRecord::Base
action.add_moderator_post_if_needed(moderator, :deferred, delete_post)
end
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_deferred, actions.first) if actions.first.present?
if actions.first.present?
DiscourseEvent.trigger(:flag_reviewed, post)
DiscourseEvent.trigger(:flag_deferred, actions.first)
end
update_flagged_posts_count
end

@ -0,0 +1,18 @@
require "rails_helper"
describe PostAction do
it "triggers the 'flag_reviewed' event when there was at least one flag" do
admin = Fabricate(:admin)
post = Fabricate(:post)
events = DiscourseEvent.track_events { PostDestroyer.new(admin, post).destroy }
expect(events.map { |e| e[:event_name] }).to_not include(:flag_reviewed)
flagged_post = Fabricate(:post)
PostAction.act(admin, flagged_post, PostActionType.types[:spam])
events = DiscourseEvent.track_events { PostDestroyer.new(admin, flagged_post).destroy }
expect(events.map { |e| e[:event_name] }).to include(:flag_reviewed)
end
end

@ -754,21 +754,24 @@ describe PostAction do
end
it 'flag agreed' do
event = DiscourseEvent.track_events { PostAction.agree_flags!(post, moderator) }.last
expect(event[:event_name]).to eq(:flag_agreed)
expect(event[:params].first).to eq(@flag)
events = DiscourseEvent.track_events { PostAction.agree_flags!(post, moderator) }.last(2)
expect(events[0][:event_name]).to eq(:flag_reviewed)
expect(events[1][:event_name]).to eq(:flag_agreed)
expect(events[1][:params].first).to eq(@flag)
end
it 'flag disagreed' do
event = DiscourseEvent.track_events { PostAction.clear_flags!(post, moderator) }.last
expect(event[:event_name]).to eq(:flag_disagreed)
expect(event[:params].first).to eq(@flag)
events = DiscourseEvent.track_events { PostAction.clear_flags!(post, moderator) }.last(2)
expect(events[0][:event_name]).to eq(:flag_reviewed)
expect(events[1][:event_name]).to eq(:flag_disagreed)
expect(events[1][:params].first).to eq(@flag)
end
it 'flag deferred' do
event = DiscourseEvent.track_events { PostAction.defer_flags!(post, moderator) }.last
expect(event[:event_name]).to eq(:flag_deferred)
expect(event[:params].first).to eq(@flag)
events = DiscourseEvent.track_events { PostAction.defer_flags!(post, moderator) }.last(2)
expect(events[0][:event_name]).to eq(:flag_reviewed)
expect(events[1][:event_name]).to eq(:flag_deferred)
expect(events[1][:params].first).to eq(@flag)
end
end
end