mirror of
https://github.com/discourse/discourse.git
synced 2024-12-04 03:53:44 +08:00
755ca0fcbb
Previously we would unconditionally fetch all images via HTTP to grab original sizing from cooked post processor in 2 different spots. This was wasteful as we already calculate and cache this info in upload records. This also simplifies some specs and reduces use of mocks.
107 lines
2.7 KiB
Ruby
107 lines
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
Fabricator(:upload) do
|
|
user
|
|
sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest("#{n}#{Process.pid}") } }
|
|
original_filename "logo.png"
|
|
filesize 1234
|
|
width 100
|
|
height 200
|
|
thumbnail_width 30
|
|
thumbnail_height 60
|
|
|
|
url do |attrs|
|
|
sequence(:url) do |n|
|
|
Discourse.store.get_path_for(
|
|
"original", n + 1, attrs[:sha1], ".#{attrs[:extension]}"
|
|
)
|
|
end
|
|
end
|
|
|
|
extension "png"
|
|
end
|
|
|
|
Fabricator(:large_image_upload, from: :upload) do
|
|
width 2000
|
|
height 2000
|
|
after_create do |upload, _transients|
|
|
file = file_from_fixtures("2000x2000.png")
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file)
|
|
end
|
|
end
|
|
|
|
Fabricator(:image_upload, from: :upload) do
|
|
transient color: "white"
|
|
|
|
after_create do |upload, transients|
|
|
file = Tempfile.new(['fabricated', '.png'])
|
|
`convert -size #{upload.width}x#{upload.height} xc:#{transients[:color]} "#{file.path}"`
|
|
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file.path)
|
|
|
|
WebMock
|
|
.stub_request(:get, "http://#{Discourse.current_hostname}#{upload.url}")
|
|
.to_return(status: 200, body: File.new(file.path))
|
|
end
|
|
end
|
|
|
|
Fabricator(:upload_no_dimensions, from: :upload) do
|
|
width nil
|
|
height nil
|
|
thumbnail_width nil
|
|
thumbnail_height nil
|
|
end
|
|
|
|
Fabricator(:video_upload, from: :upload) do
|
|
original_filename "video.mp4"
|
|
width nil
|
|
height nil
|
|
thumbnail_width nil
|
|
thumbnail_height nil
|
|
extension "mp4"
|
|
end
|
|
|
|
Fabricator(:secure_upload, from: :upload) do
|
|
secure true
|
|
sha1 { SecureRandom.hex(20) }
|
|
original_sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest(n.to_s) } }
|
|
end
|
|
|
|
Fabricator(:upload_s3, from: :upload) do
|
|
url do |attrs|
|
|
sequence(:url) do |n|
|
|
path = +Discourse.store.get_path_for(
|
|
"original", n + 1, attrs[:sha1], ".#{attrs[:extension]}"
|
|
)
|
|
|
|
if Rails.configuration.multisite
|
|
path.prepend(File.join(Discourse.store.upload_path, "/"))
|
|
end
|
|
|
|
File.join(Discourse.store.absolute_base_url, path)
|
|
end
|
|
end
|
|
end
|
|
|
|
Fabricator(:s3_image_upload, from: :upload_s3) do
|
|
after_create do |upload|
|
|
file = Tempfile.new(['fabricated', '.png'])
|
|
`convert -size #{upload.width}x#{upload.height} xc:white "#{file.path}"`
|
|
|
|
upload.url = Discourse.store.store_upload(file, upload)
|
|
upload.sha1 = Upload.generate_digest(file.path)
|
|
|
|
WebMock
|
|
.stub_request(:get, upload.url)
|
|
.to_return(status: 200, body: File.new(file.path))
|
|
end
|
|
end
|
|
|
|
Fabricator(:secure_upload_s3, from: :upload_s3) do
|
|
secure true
|
|
sha1 { SecureRandom.hex(20) }
|
|
original_sha1 { sequence(:sha1) { |n| Digest::SHA1.hexdigest(n.to_s) } }
|
|
end
|