diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index 5dcc8bdbc22..7e440f84792 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -50,6 +50,9 @@ class NewPostManager def perform + # We never queue private messages + return perform_create_post if @args[:archetype] == Archetype.private_message + # Perform handlers until one returns a result handled = NewPostManager.handlers.any? do |handler| result = handler.call(self) diff --git a/spec/components/new_post_manager_spec.rb b/spec/components/new_post_manager_spec.rb index abc03a9de1f..bf09d88e6da 100644 --- a/spec/components/new_post_manager_spec.rb +++ b/spec/components/new_post_manager_spec.rb @@ -17,6 +17,27 @@ describe NewPostManager do end end + context "default action" do + let(:other_user) { Fabricate(:user) } + + it "doesn't enqueue private messages" do + 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) + end + end + context "default handler" do let(:manager) { NewPostManager.new(topic.user, raw: 'this is new post content', topic_id: topic.id) } @@ -54,6 +75,7 @@ describe NewPostManager do expect(result.action).to eq(:enqueued) end end + end context "extensibility priority" do