Don't enqueue topic webhook unless a post has a topic

This commit is contained in:
scossar 2018-01-22 11:58:01 -08:00 committed by Guo Xiang Tan
parent 7bcc0c1da9
commit 9d0807224b
2 changed files with 26 additions and 3 deletions

View File

@ -18,8 +18,13 @@ end
end
DiscourseEvent.on(:post_edited) do |post, topic_changed|
WebHook.enqueue_post_hooks(:post_edited, post)
WebHook.enqueue_topic_hooks(:topic_edited, post.topic) if post.is_first_post? && topic_changed
if post.topic
WebHook.enqueue_post_hooks(:post_edited, post)
if post.is_first_post? && topic_changed
WebHook.enqueue_topic_hooks(:topic_edited, post.topic)
end
end
end
%i(

View File

@ -145,6 +145,24 @@ describe WebHook do
end
end
describe 'when topic has been deleted' do
it 'should not enqueue a post/topic edited hooks' do
topic.trash!
post.reload
PostRevisor.new(post, topic).revise!(
post.user,
{
category_id: Category.last.id,
raw: "#{post.raw} new"
},
{}
)
expect(Jobs::EmitWebHookEvent.jobs.count).to eq(0)
end
end
it 'should enqueue the right hooks for post events' do
Fabricate(:web_hook)
@ -188,7 +206,7 @@ describe WebHook do
end
it 'should enqueue the right hooks for user events' do
_user_web_hook = Fabricate(:user_web_hook, active: true)
Fabricate(:user_web_hook, active: true)
Sidekiq::Testing.fake! do
user