FIX: moving a post to a topic with a deleted post should use correct post_number. Was getting unique index violation on (topic_id, post_number).

This commit is contained in:
Neil Lalonde 2014-08-20 12:28:34 -04:00
parent 6ef85ea014
commit 96eecf18ef
2 changed files with 31 additions and 1 deletions

View File

@ -575,7 +575,7 @@ class Topic < ActiveRecord::Base
end end
def max_post_number def max_post_number
posts.maximum(:post_number).to_i posts.with_deleted.maximum(:post_number).to_i
end end
def move_posts(moved_by, post_ids, opts) def move_posts(moved_by, post_ids, opts)

View File

@ -173,6 +173,36 @@ describe PostMover do
end end
context "to an existing topic with a deleted post" do
let!(:destination_topic) { Fabricate(:topic, user: user ) }
let!(:destination_op) { Fabricate(:post, topic: destination_topic, user: user) }
let!(:destination_deleted_reply) { Fabricate(:post, topic: destination_topic, user: another_user) }
let(:moved_to) { topic.move_posts(user, [p2.id, p4.id], destination_topic_id: destination_topic.id)}
it "works correctly" do
destination_deleted_reply.trash!
moved_to.should == destination_topic
# Check out new topic
moved_to.reload
moved_to.posts_count.should == 3
moved_to.highest_post_number.should == 4
# Posts should be re-ordered
p2.reload
p2.sort_order.should == 3
p2.post_number.should == 3
p2.topic_id.should == moved_to.id
p4.reload
p4.post_number.should == 4
p4.sort_order.should == 4
p4.topic_id.should == moved_to.id
end
end
end end
end end