mirror of
https://github.com/discourse/discourse.git
synced 2024-11-22 15:16:08 +08:00
FIX: Ensure uploads are linked to post when revising a post
Editing a post didn't update the `post_uploads` right away. Instead it relied on the `CookedPostProcessor`. This can lead to an inconsistent state if uploads are added or removed during an edit and, for some reason, the `ProcessPost` job doesn't run (successfully). This inconsistency leads to missing uploads, because the newly added uploads appear to be unused and will be deleted by the `CleanUpUploads` job. In addition to that, uploads, which got removed during the edit, appear to be still in use and won't be deleted by the background job. This commit ensures that the `post_uploads` are updated during the edit without relying on a background job.
This commit is contained in:
parent
543e972fec
commit
81395be4c1
|
@ -386,6 +386,7 @@ class PostRevisor
|
|||
@post.extract_quoted_post_numbers
|
||||
|
||||
@post_successfully_saved = @post.save(validate: @validate_post)
|
||||
@post.link_post_uploads
|
||||
@post.save_reply_relationships
|
||||
|
||||
# post owner changed
|
||||
|
|
|
@ -951,5 +951,37 @@ describe PostRevisor do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "uploads" do
|
||||
let(:image1) { Fabricate(:upload) }
|
||||
let(:image2) { Fabricate(:upload) }
|
||||
let(:image3) { Fabricate(:upload) }
|
||||
let(:image4) { Fabricate(:upload) }
|
||||
let(:post_args) do
|
||||
{
|
||||
user: user,
|
||||
topic: topic,
|
||||
raw: <<~RAW
|
||||
This is a post with multiple uploads
|
||||
![image1](#{image1.short_url})
|
||||
![image2](#{image2.short_url})
|
||||
RAW
|
||||
}
|
||||
end
|
||||
|
||||
it "updates linked post uploads" do
|
||||
post.link_post_uploads
|
||||
expect(post.post_uploads.pluck(:upload_id)).to contain_exactly(image1.id, image2.id)
|
||||
|
||||
subject.revise!(user, raw: <<~RAW)
|
||||
This is a post with multiple uploads
|
||||
![image2](#{image2.short_url})
|
||||
![image3](#{image3.short_url})
|
||||
![image4](#{image4.short_url})
|
||||
RAW
|
||||
|
||||
expect(post.reload.post_uploads.pluck(:upload_id)).to contain_exactly(image2.id, image3.id, image4.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user