mirror of
https://github.com/discourse/discourse.git
synced 2025-03-05 12:45:41 +08:00
FIX: do not validate topic deletions
This commit is contained in:
parent
06deffc9da
commit
b1082924b9
@ -168,12 +168,12 @@ class PostDestroyer
|
|||||||
|
|
||||||
def make_previous_post_the_last_one
|
def make_previous_post_the_last_one
|
||||||
last_post = Post.where("topic_id = ? and id <> ?", @post.topic_id, @post.id).order('created_at desc').limit(1).first
|
last_post = Post.where("topic_id = ? and id <> ?", @post.topic_id, @post.id).order('created_at desc').limit(1).first
|
||||||
if last_post.present?
|
if last_post.present? && @post.topic.present?
|
||||||
@post.topic.update!(
|
topic = @post.topic
|
||||||
last_posted_at: last_post.created_at,
|
topic.last_posted_at = last_post.created_at
|
||||||
last_post_user_id: last_post.user_id,
|
topic.last_post_user_id = last_post.user_id
|
||||||
highest_post_number: last_post.post_number
|
topic.highest_post_number = last_post.post_number
|
||||||
)
|
topic.save!(validate: false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -265,9 +265,10 @@ describe PostDestroyer do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "when topic is destroyed, it updates user_stats correctly" do
|
it "when topic is destroyed, it updates user_stats correctly" do
|
||||||
post
|
SiteSetting.min_topic_title_length = 5
|
||||||
|
post.topic.update_column(:title, "xyz")
|
||||||
|
|
||||||
user1 = post.user
|
user1 = post.user
|
||||||
user1.reload
|
|
||||||
user2 = Fabricate(:user)
|
user2 = Fabricate(:user)
|
||||||
reply = create_post(topic_id: post.topic_id, user: user2)
|
reply = create_post(topic_id: post.topic_id, user: user2)
|
||||||
reply2 = create_post(topic_id: post.topic_id, user: user1)
|
reply2 = create_post(topic_id: post.topic_id, user: user1)
|
||||||
@ -275,6 +276,7 @@ describe PostDestroyer do
|
|||||||
expect(user1.user_stat.post_count).to eq(1)
|
expect(user1.user_stat.post_count).to eq(1)
|
||||||
expect(user2.user_stat.topic_count).to eq(0)
|
expect(user2.user_stat.topic_count).to eq(0)
|
||||||
expect(user2.user_stat.post_count).to eq(1)
|
expect(user2.user_stat.post_count).to eq(1)
|
||||||
|
|
||||||
PostDestroyer.new(Fabricate(:admin), post).destroy
|
PostDestroyer.new(Fabricate(:admin), post).destroy
|
||||||
user1.reload
|
user1.reload
|
||||||
user2.reload
|
user2.reload
|
||||||
@ -390,12 +392,13 @@ describe PostDestroyer do
|
|||||||
|
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
let!(:post) { create_post(user: user) }
|
let!(:post) { create_post(user: user) }
|
||||||
let(:topic) { post.topic.reload }
|
let(:topic) { post.topic }
|
||||||
let(:second_user) { Fabricate(:coding_horror) }
|
let(:second_user) { Fabricate(:coding_horror) }
|
||||||
let!(:second_post) { create_post(topic: topic, user: second_user) }
|
let!(:second_post) { create_post(topic: topic, user: second_user) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
PostDestroyer.new(moderator, second_post).destroy
|
PostDestroyer.new(moderator, second_post).destroy
|
||||||
|
topic.reload
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'resets the last_poster_id back to the OP' do
|
it 'resets the last_poster_id back to the OP' do
|
||||||
@ -406,6 +409,10 @@ describe PostDestroyer do
|
|||||||
expect(topic.last_posted_at.to_i).to eq(post.created_at.to_i)
|
expect(topic.last_posted_at.to_i).to eq(post.created_at.to_i)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'resets the highest_post_number' do
|
||||||
|
expect(topic.highest_post_number).to eq(post.post_number)
|
||||||
|
end
|
||||||
|
|
||||||
context 'topic_user' do
|
context 'topic_user' do
|
||||||
|
|
||||||
let(:topic_user) { second_user.topic_users.find_by(topic_id: topic.id) }
|
let(:topic_user) { second_user.topic_users.find_by(topic_id: topic.id) }
|
||||||
@ -421,9 +428,7 @@ describe PostDestroyer do
|
|||||||
it "sets the second user's last_read_post_number back to 1" do
|
it "sets the second user's last_read_post_number back to 1" do
|
||||||
expect(topic_user.highest_seen_post_number).to eq(1)
|
expect(topic_user.highest_seen_post_number).to eq(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "deleting a post belonging to a deleted topic" do
|
context "deleting a post belonging to a deleted topic" do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user