summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2012-07-07 13:48:07 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2012-07-07 13:48:07 +0000
commita0c495b953b84d90f5c87f089eaefbf310b9dfeb (patch)
tree80206825ef5f1674b9330aa2688e3bb0d3c48f24 /test
parentb0bd50620195b19dcc1b7f2f82de73fceaa13692 (diff)
downloadredmine-a0c495b953b84d90f5c87f089eaefbf310b9dfeb.tar.gz
redmine-a0c495b953b84d90f5c87f089eaefbf310b9dfeb.zip
Displays thumbnails of attached images of the issue view (#1006).
This behaviour can be turned on/off in Settings -> Display (off by default). Thumbnail size can be configured there too. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9933 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/functional/attachments_controller_test.rb48
-rw-r--r--test/functional/issues_controller_test.rb28
-rw-r--r--test/integration/routing/attachments_test.rb4
-rw-r--r--test/test_helper.rb7
-rw-r--r--test/unit/attachment_test.rb24
5 files changed, 109 insertions, 2 deletions
diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb
index 487ec5809..949ed3979 100644
--- a/test/functional/attachments_controller_test.rb
+++ b/test/functional/attachments_controller_test.rb
@@ -252,12 +252,58 @@ class AttachmentsControllerTest < ActionController::TestCase
set_tmp_attachments_directory
end
- def test_anonymous_on_private_private
+ def test_download_should_be_denied_without_permission
get :download, :id => 7
assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fdownload%2F7'
set_tmp_attachments_directory
end
+ if convert_installed?
+ def test_thumbnail
+ Attachment.clear_thumbnails
+ @request.session[:user_id] = 2
+ with_settings :thumbnails_enabled => '1' do
+ get :thumbnail, :id => 16
+ assert_response :success
+ assert_equal 'image/png', response.content_type
+ end
+ end
+
+ def test_thumbnail_should_return_404_for_non_image_attachment
+ @request.session[:user_id] = 2
+ with_settings :thumbnails_enabled => '1' do
+ get :thumbnail, :id => 15
+ assert_response 404
+ end
+ end
+
+ def test_thumbnail_should_return_404_if_thumbnails_not_enabled
+ @request.session[:user_id] = 2
+ with_settings :thumbnails_enabled => '0' do
+ get :thumbnail, :id => 16
+ assert_response 404
+ end
+ end
+
+ def test_thumbnail_should_return_404_if_thumbnail_generation_failed
+ Attachment.any_instance.stubs(:thumbnail).returns(nil)
+ @request.session[:user_id] = 2
+ with_settings :thumbnails_enabled => '1' do
+ get :thumbnail, :id => 16
+ assert_response 404
+ end
+ end
+
+ def test_thumbnail_should_be_denied_without_permission
+ with_settings :thumbnails_enabled => '1' do
+ get :thumbnail, :id => 16
+ assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fthumbnail%2F16'
+ end
+ end
+ else
+ puts '(ImageMagick convert not available)'
+ end
+
def test_destroy_issue_attachment
set_tmp_attachments_directory
issue = Issue.find(3)
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index d5c2565a1..7e9e3a398 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -1155,7 +1155,33 @@ class IssuesControllerTest < ActionController::TestCase
end
end
end
-
+
+ def test_show_with_thumbnails_enabled_should_display_thumbnails
+ @request.session[:user_id] = 2
+
+ with_settings :thumbnails_enabled => '1' do
+ get :show, :id => 14
+ assert_response :success
+ end
+
+ assert_select 'div.thumbnails' do
+ assert_select 'a[href=/attachments/16/testfile.png]' do
+ assert_select 'img[src=/attachments/thumbnail/16]'
+ end
+ end
+ end
+
+ def test_show_with_thumbnails_disabled_should_not_display_thumbnails
+ @request.session[:user_id] = 2
+
+ with_settings :thumbnails_enabled => '0' do
+ get :show, :id => 14
+ assert_response :success
+ end
+
+ assert_select 'div.thumbnails', 0
+ end
+
def test_show_with_multi_custom_field
field = CustomField.find(1)
field.update_attribute :multiple, true
diff --git a/test/integration/routing/attachments_test.rb b/test/integration/routing/attachments_test.rb
index 84ccbbb67..ba4bb2c36 100644
--- a/test/integration/routing/attachments_test.rb
+++ b/test/integration/routing/attachments_test.rb
@@ -46,6 +46,10 @@ class RoutingAttachmentsTest < ActionController::IntegrationTest
:filename => 'filename.ext' }
)
assert_routing(
+ { :method => 'get', :path => "/attachments/thumbnail/1" },
+ { :controller => 'attachments', :action => 'thumbnail', :id => '1' }
+ )
+ assert_routing(
{ :method => 'delete', :path => "/attachments/1" },
{ :controller => 'attachments', :action => 'destroy', :id => '1' }
)
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 4485f75c9..6f5ab98a4 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -128,6 +128,13 @@ class ActiveSupport::TestCase
return nil
end
+ def self.convert_installed?
+ bin = Redmine::Configuration['imagemagick_convert_command'] || 'convert'
+ system("#{bin} -version")
+ rescue
+ false
+ end
+
# Returns the path to the test +vendor+ repository
def self.repository_path(vendor)
Rails.root.join("tmp/test/#{vendor.downcase}_repository").to_s
diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb
index 9d78077fd..cd301dc93 100644
--- a/test/unit/attachment_test.rb
+++ b/test/unit/attachment_test.rb
@@ -214,4 +214,28 @@ class AttachmentTest < ActiveSupport::TestCase
set_tmp_attachments_directory
end
+
+ def test_thumbnailable_should_be_true_for_images
+ assert_equal true, Attachment.new(:filename => 'test.jpg').thumbnailable?
+ end
+
+ def test_thumbnailable_should_be_true_for_non_images
+ assert_equal false, Attachment.new(:filename => 'test.txt').thumbnailable?
+ end
+
+ if convert_installed?
+ def test_thumbnail_should_generate_the_thumbnail
+ set_fixtures_attachments_directory
+ attachment = Attachment.find(16)
+ Attachment.clear_thumbnails
+
+ assert_difference "Dir.glob(File.join(Attachment.thumbnails_storage_path, '*.thumb')).size" do
+ thumbnail = attachment.thumbnail
+ assert_equal "16_8e0294de2441577c529f170b6fb8f638_100.thumb", File.basename(thumbnail)
+ assert File.exists?(thumbnail)
+ end
+ end
+ else
+ puts '(ImageMagick convert not available)'
+ end
end