Project

General

Profile

Patch #30177 » 0001-allows-re-use-of-thumbnails-for-identical-attachment.patch

Jens Krämer, 2018-12-11 08:49

View differences:

app/models/attachment.rb
216 216
        size = Setting.thumbnails_size.to_i
217 217
      end
218 218
      size = 100 unless size > 0
219
      target = File.join(self.class.thumbnails_storage_path, "#{id}_#{digest}_#{size}.thumb")
219
      target = File.join(self.class.thumbnails_storage_path, "#{digest}_#{filesize}_#{size}.thumb")
220 220

  
221 221
      begin
222 222
        Redmine::Thumbnail.generate(self.diskfile, target, size)
test/unit/attachment_test.rb
429 429

  
430 430
      assert_difference "Dir.glob(File.join(Attachment.thumbnails_storage_path, '*.thumb')).size" do
431 431
        thumbnail = attachment.thumbnail
432
        assert_equal "16_8e0294de2441577c529f170b6fb8f638_100.thumb", File.basename(thumbnail)
432
        assert_equal "8e0294de2441577c529f170b6fb8f638_2654_100.thumb", File.basename(thumbnail)
433 433
        assert File.exists?(thumbnail)
434 434
      end
435 435
    end
436 436

  
437
    def test_should_reuse_thumbnail
438
      a = Attachment.create!(
439
        :container => Issue.find(1),
440
        :file => uploaded_test_file("2010/11/101123161450_testfile_1.png", "image/png"),
441
        :author => User.find(1)
442
      )
443
      a_thumb = b_thumb = nil
444
      assert_difference "Dir.glob(File.join(Attachment.thumbnails_storage_path, '*.thumb')).size" do
445
        a_thumb = a.thumbnail
446
      end
447

  
448
      b = Attachment.create!(
449
        :container => Issue.find(2),
450
        :file => uploaded_test_file("2010/11/101123161450_testfile_1.png", "image/png"),
451
        :author => User.find(1)
452
      )
453
      assert_no_difference "Dir.glob(File.join(Attachment.thumbnails_storage_path, '*.thumb')).size" do
454
        b_thumb = b.thumbnail
455
      end
456
      assert_equal a_thumb, b_thumb
457
    end
458

  
437 459
    def test_thumbnail_should_return_nil_if_generation_fails
438 460
      Redmine::Thumbnail.expects(:generate).raises(SystemCallError, 'Something went wrong')
439 461
      set_fixtures_attachments_directory
(1-1/2)