diff --git a/app/models/post.rb b/app/models/post.rb index 4296ee20ac0..def180ffe5b 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -781,7 +781,7 @@ class Post < ActiveRecord::Base end def create_reply_relationship_with(post) - return if post.nil? + return if post.nil? || self.deleted_at.present? post_reply = post.post_replies.new(reply_id: id) if post_reply.save if Topic.visible_post_types.include?(self.post_type) diff --git a/spec/services/post_owner_changer_spec.rb b/spec/services/post_owner_changer_spec.rb index 5ad9d8af574..b9f836533e4 100644 --- a/spec/services/post_owner_changer_spec.rb +++ b/spec/services/post_owner_changer_spec.rb @@ -5,8 +5,8 @@ describe PostOwnerChanger do let!(:editor) { Fabricate(:admin) } let(:topic) { Fabricate(:topic) } let(:user_a) { Fabricate(:user) } - let(:p1) { Fabricate(:post, topic_id: topic.id) } - let(:p2) { Fabricate(:post, topic_id: topic.id) } + let(:p1) { Fabricate(:post, topic_id: topic.id, post_number: 1) } + let(:p2) { Fabricate(:post, topic_id: topic.id, post_number: 2) } let(:p3) { Fabricate(:post) } it "raises an error with a parameter missing" do @@ -75,6 +75,14 @@ describe PostOwnerChanger do expect(p1.reload.user).to eq(user_a) end + it "changes the owner when the post is deleted" do + p4 = Fabricate(:post, topic_id: topic.id, reply_to_post_number: p2.post_number) + PostDestroyer.new(editor, p4).destroy + + PostOwnerChanger.new(post_ids: [p4.id], topic_id: topic.id, new_owner: user_a, acting_user: editor).change_owner! + expect(p4.reload.user).to eq(user_a) + end + context "sets topic notification level for the new owner" do let(:p4) { Fabricate(:post, post_number: 2, topic_id: topic.id) }