From 5fdbc6c4b22eab4f06e8d0c6dda1d5b08b94b1c9 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 13 May 2015 12:08:39 -0400 Subject: [PATCH] FIX: Replies to PMs should never been enqueued --- lib/new_post_manager.rb | 3 +++ spec/components/new_post_manager_spec.rb | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index 7e440f84792..1cbc38e1917 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -52,6 +52,9 @@ class NewPostManager # We never queue private messages return perform_create_post if @args[:archetype] == Archetype.private_message + if args[:topic_id] && Topic.where(id: args[:topic_id], archetype: Archetype.private_message).exists? + return perform_create_post + end # Perform handlers until one returns a result handled = NewPostManager.handlers.any? do |handler| diff --git a/spec/components/new_post_manager_spec.rb b/spec/components/new_post_manager_spec.rb index bf09d88e6da..f68c606ebd8 100644 --- a/spec/components/new_post_manager_spec.rb +++ b/spec/components/new_post_manager_spec.rb @@ -21,13 +21,27 @@ describe NewPostManager do let(:other_user) { Fabricate(:user) } it "doesn't enqueue private messages" do + SiteSetting.approve_unless_trust_level = 4 + manager = NewPostManager.new(topic.user, raw: 'this is a new post', title: 'this is a new title', archetype: Archetype.private_message, target_usernames: other_user.username) - SiteSetting.approve_unless_trust_level = 4 + result = manager.perform + + expect(result.action).to eq(:create_post) + expect(result).to be_success + expect(result.post).to be_present + expect(result.post.topic.private_message?).to eq(true) + expect(result.post).to be_a(Post) + + # It doesn't enqueue replies to the private message either + manager = NewPostManager.new(topic.user, + raw: 'this is a new reply', + topic_id: result.post.topic_id) + result = manager.perform expect(result.action).to eq(:create_post) @@ -36,6 +50,7 @@ describe NewPostManager do expect(result.post.topic.private_message?).to eq(true) expect(result.post).to be_a(Post) end + end context "default handler" do