mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: don't destroy uploads in queued posts and drafts
This commit is contained in:
@@ -3,11 +3,16 @@ require 'rails_helper'
|
||||
require_dependency 'jobs/scheduled/clean_up_uploads'
|
||||
|
||||
describe Jobs::CleanUpUploads do
|
||||
|
||||
def fabricate_upload
|
||||
Fabricate(:upload, created_at: 2.hours.ago)
|
||||
end
|
||||
|
||||
before do
|
||||
Upload.destroy_all
|
||||
SiteSetting.clean_up_uploads = true
|
||||
SiteSetting.clean_orphan_uploads_grace_period_hours = 1
|
||||
@upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
@upload = fabricate_upload
|
||||
end
|
||||
|
||||
it "deletes orphan uploads" do
|
||||
@@ -19,7 +24,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete profile background uploads" do
|
||||
profile_background_upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
profile_background_upload = fabricate_upload
|
||||
UserProfile.last.update_attributes!(profile_background: profile_background_upload.url)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -29,7 +34,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete card background uploads" do
|
||||
card_background_upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
card_background_upload = fabricate_upload
|
||||
UserProfile.last.update_attributes!(card_background: card_background_upload.url)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -39,7 +44,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete category logo uploads" do
|
||||
category_logo_upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
category_logo_upload = fabricate_upload
|
||||
category = Fabricate(:category, logo_url: category_logo_upload.url)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -49,7 +54,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete category background url uploads" do
|
||||
category_background_url = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
category_background_url = fabricate_upload
|
||||
category = Fabricate(:category, background_url: category_background_url.url)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -59,7 +64,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete post uploads" do
|
||||
upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
upload = fabricate_upload
|
||||
post = Fabricate(:post, uploads: [upload])
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -69,7 +74,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete user uploaded avatar" do
|
||||
upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
upload = fabricate_upload
|
||||
user = Fabricate(:user, uploaded_avatar: upload)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -79,7 +84,7 @@ describe Jobs::CleanUpUploads do
|
||||
end
|
||||
|
||||
it "does not delete user gravatar" do
|
||||
upload = Fabricate(:upload, created_at: 2.hours.ago)
|
||||
upload = fabricate_upload
|
||||
user = Fabricate(:user, user_avatar: Fabricate(:user_avatar, gravatar_upload: upload))
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
@@ -87,4 +92,32 @@ describe Jobs::CleanUpUploads do
|
||||
expect(Upload.find_by(id: @upload.id)).to eq(nil)
|
||||
expect(Upload.find_by(id: upload.id)).to eq(upload)
|
||||
end
|
||||
|
||||
it "does not delete uploads in a queued post" do
|
||||
upload = fabricate_upload
|
||||
|
||||
QueuedPost.create(
|
||||
queue: "uploads",
|
||||
state: QueuedPost.states[:new],
|
||||
user_id: Fabricate(:user).id,
|
||||
raw: upload.sha1,
|
||||
post_options: {}
|
||||
)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
|
||||
expect(Upload.find_by(id: @upload.id)).to eq(nil)
|
||||
expect(Upload.find_by(id: upload.id)).to eq(upload)
|
||||
end
|
||||
|
||||
it "does not delete uploads in a draft" do
|
||||
upload = fabricate_upload
|
||||
Draft.set(Fabricate(:user), "test", 0, upload.sha1)
|
||||
|
||||
Jobs::CleanUpUploads.new.execute(nil)
|
||||
|
||||
expect(Upload.find_by(id: @upload.id)).to eq(nil)
|
||||
expect(Upload.find_by(id: upload.id)).to eq(upload)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user