1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activestorage/test/previewer/video_previewer_test.rb
Alex Robbin d6197d4c86 Active Storage: raise PreviewError when a preview cannot be generated
If a preview cannot be generated, the IO stream that is captured is empty, resulting in a 0-byte preview file being generated and stored in the Active Storage service.

We came across this because Poppler was failing to generate previews of some PDFs, resulting in 0-byte files. Resizing those "previews" then resulted in a MiniMagick error. The MiniMagick error feels like the right end result if it's attempted on a 0-byte file, what doesn't feel right is `Previewer` proceeding normally if the child process that attempted to capture a preview exited unsuccessfully.

Now, if the previewer child process exits with a non-0 status code, we raise an exception.
2021-02-26 14:06:52 -05:00

30 lines
974 B
Ruby

# frozen_string_literal: true
require "test_helper"
require "database/setup"
require "active_storage/previewer/video_previewer"
class ActiveStorage::Previewer::VideoPreviewerTest < ActiveSupport::TestCase
test "previewing an MP4 video" do
blob = create_file_blob(filename: "video.mp4", content_type: "video/mp4")
ActiveStorage::Previewer::VideoPreviewer.new(blob).preview do |attachable|
assert_equal "image/jpeg", attachable[:content_type]
assert_equal "video.jpg", attachable[:filename]
image = MiniMagick::Image.read(attachable[:io])
assert_equal 640, image.width
assert_equal 480, image.height
assert_equal "image/jpeg", image.mime_type
end
end
test "previewing a video that can't be previewed" do
blob = create_file_blob(filename: "report.pdf", content_type: "video/mp4")
assert_raises ActiveStorage::PreviewError do
ActiveStorage::Previewer::VideoPreviewer.new(blob).preview
end
end
end