From 759b6ec373e4e704a431ba8f37aa0598b004de9b Mon Sep 17 00:00:00 2001 From: Jens Kraemer Date: Tue, 11 Dec 2018 16:06:52 +0800 Subject: [PATCH] makes sure the generated thumbnail is always of at least the requested size --- app/models/attachment.rb | 2 +- test/unit/attachment_test.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/attachment.rb b/app/models/attachment.rb index cc9b5f930..bc88beaf2 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -209,7 +209,7 @@ class Attachment < ActiveRecord::Base size = options[:size].to_i if size > 0 # Limit the number of thumbnails per image - size = (size / 50) * 50 + size = (size / 50.0).ceil * 50 # Maximum thumbnail size size = 800 if size > 800 else diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index 2bee67ed2..52f81e31b 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -440,6 +440,24 @@ class AttachmentTest < ActiveSupport::TestCase attachment = Attachment.find(16) assert_nil attachment.thumbnail end + + def test_thumbnail_should_be_at_least_of_requested_size + set_fixtures_attachments_directory + attachment = Attachment.find(16) + Attachment.clear_thumbnails + [ + [0, 100], + [49, 50], + [50, 50], + [51, 100], + [100, 100], + [101, 150], + ].each do |size, generated_size| + thumbnail = attachment.thumbnail(size: size) + assert_equal "16_8e0294de2441577c529f170b6fb8f638_#{generated_size}.thumb", + File.basename(thumbnail) + end + end else puts '(ImageMagick convert not available)' end -- 2.11.0