ioquatix-attachment_fu 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/database.yml ADDED
@@ -0,0 +1,18 @@
1
+ sqlite:
2
+ :adapter: sqlite
3
+ :dbfile: attachment_fu_plugin.sqlite.db
4
+ sqlite3:
5
+ :adapter: sqlite3
6
+ :dbfile: attachment_fu_plugin.sqlite3.db
7
+ postgresql:
8
+ :adapter: postgresql
9
+ :username: postgres
10
+ :password: postgres
11
+ :database: attachment_fu_plugin_test
12
+ :min_messages: ERROR
13
+ mysql:
14
+ :adapter: mysql
15
+ :host: localhost
16
+ :username: rails
17
+ :password:
18
+ :database: attachment_fu_plugin_test
@@ -0,0 +1,67 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
2
+
3
+ class OrphanAttachmentTest < Test::Unit::TestCase
4
+ include BaseAttachmentTests
5
+ attachment_model OrphanAttachment
6
+
7
+ def test_should_create_image_from_uploaded_file
8
+ assert_created do
9
+ attachment = upload_file :filename => '/files/rails.png'
10
+ assert_valid attachment
11
+ assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
12
+ assert attachment.image?
13
+ assert !attachment.size.zero?
14
+ end
15
+ end
16
+
17
+ def test_should_create_file_from_uploaded_file
18
+ assert_created do
19
+ attachment = upload_file :filename => '/files/foo.txt'
20
+ assert_valid attachment
21
+ assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
22
+ assert attachment.image?
23
+ assert !attachment.size.zero?
24
+ end
25
+ end
26
+
27
+ def test_should_create_file_from_merb_temp_file
28
+ assert_created do
29
+ attachment = upload_merb_file :filename => '/files/foo.txt'
30
+ assert_valid attachment
31
+ assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
32
+ assert attachment.image?
33
+ assert !attachment.size.zero?
34
+ end
35
+ end
36
+
37
+ def test_should_create_image_from_uploaded_file_with_custom_content_type
38
+ assert_created do
39
+ attachment = upload_file :content_type => 'foo/bar', :filename => '/files/rails.png'
40
+ assert_valid attachment
41
+ assert !attachment.image?
42
+ assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
43
+ assert !attachment.size.zero?
44
+ #assert_equal 1784, attachment.size
45
+ end
46
+ end
47
+
48
+ def test_should_create_thumbnail
49
+ attachment = upload_file :filename => '/files/rails.png'
50
+
51
+ assert_raise Technoweenie::AttachmentFu::ThumbnailError do
52
+ attachment.create_or_update_thumbnail(attachment.create_temp_file, 'thumb', 50, 50)
53
+ end
54
+ end
55
+
56
+ def test_should_create_thumbnail_with_geometry_string
57
+ attachment = upload_file :filename => '/files/rails.png'
58
+
59
+ assert_raise Technoweenie::AttachmentFu::ThumbnailError do
60
+ attachment.create_or_update_thumbnail(attachment.create_temp_file, 'thumb', 'x50')
61
+ end
62
+ end
63
+ end
64
+
65
+ class MinimalAttachmentTest < OrphanAttachmentTest
66
+ attachment_model MinimalAttachment
67
+ end
@@ -0,0 +1,148 @@
1
+ class Attachment < ActiveRecord::Base
2
+ @@saves = 0
3
+ cattr_accessor :saves
4
+ has_attachment :processor => :rmagick
5
+ validates_as_attachment
6
+ after_attachment_saved do |record|
7
+ self.saves += 1
8
+ end
9
+ end
10
+
11
+ class SmallAttachment < Attachment
12
+ has_attachment :max_size => 1.kilobyte
13
+ end
14
+
15
+ class BigAttachment < Attachment
16
+ has_attachment :size => 1.megabyte..2.megabytes
17
+ end
18
+
19
+ class PdfAttachment < Attachment
20
+ has_attachment :content_type => 'pdf'
21
+ end
22
+
23
+ class DocAttachment < Attachment
24
+ has_attachment :content_type => %w(pdf doc txt)
25
+ end
26
+
27
+ class ImageAttachment < Attachment
28
+ has_attachment :content_type => :image, :resize_to => [50,50]
29
+ end
30
+
31
+ class ImageOrPdfAttachment < Attachment
32
+ has_attachment :content_type => ['pdf', :image], :resize_to => 'x50'
33
+ end
34
+
35
+ class ImageWithThumbsAttachment < Attachment
36
+ has_attachment :thumbnails => { :thumb => [50, 50], :geometry => 'x50' }, :resize_to => [55,55]
37
+ after_resize do |record, img|
38
+ record.aspect_ratio = img.columns.to_f / img.rows.to_f
39
+ end
40
+ end
41
+
42
+ class FileAttachment < ActiveRecord::Base
43
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files', :processor => :rmagick
44
+ validates_as_attachment
45
+ end
46
+
47
+ class ImageFileAttachment < FileAttachment
48
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
49
+ :content_type => :image, :resize_to => [50,50]
50
+ end
51
+
52
+ class ImageWithThumbsFileAttachment < FileAttachment
53
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
54
+ :thumbnails => { :thumb => [50, 50], :geometry => 'x50' }, :resize_to => [55,55]
55
+ after_resize do |record, img|
56
+ record.aspect_ratio = img.columns.to_f / img.rows.to_f
57
+ end
58
+ end
59
+
60
+ class ImageWithThumbsClassFileAttachment < FileAttachment
61
+ # use file_system_path to test backwards compatibility
62
+ has_attachment :file_system_path => 'vendor/plugins/attachment_fu/test/files',
63
+ :thumbnails => { :thumb => [50, 50] }, :resize_to => [55,55],
64
+ :thumbnail_class => 'ImageThumbnail'
65
+ end
66
+
67
+ class ImageThumbnail < FileAttachment
68
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files/thumbnails'
69
+ end
70
+
71
+ # no parent
72
+ class OrphanAttachment < ActiveRecord::Base
73
+ has_attachment :processor => :rmagick
74
+ validates_as_attachment
75
+ end
76
+
77
+ # no filename, no size, no content_type
78
+ class MinimalAttachment < ActiveRecord::Base
79
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files', :processor => :rmagick
80
+ validates_as_attachment
81
+
82
+ def filename
83
+ "#{id}.file"
84
+ end
85
+ end
86
+
87
+ begin
88
+ class ImageScienceAttachment < ActiveRecord::Base
89
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
90
+ :processor => :image_science, :thumbnails => { :thumb => [50, 51], :geometry => '31>' }, :resize_to => 55
91
+ end
92
+ rescue MissingSourceFile
93
+ puts $!.message
94
+ puts "no ImageScience"
95
+ end
96
+
97
+ begin
98
+ class CoreImageAttachment < ActiveRecord::Base
99
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
100
+ :processor => :core_image, :thumbnails => { :thumb => [50, 51], :geometry => '31>' }, :resize_to => 55
101
+ end
102
+ rescue MissingSourceFile
103
+ puts $!.message
104
+ puts "no CoreImage"
105
+ end
106
+
107
+ begin
108
+ class MiniMagickAttachment < ActiveRecord::Base
109
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
110
+ :processor => :mini_magick, :thumbnails => { :thumb => [50, 51], :geometry => '31>' }, :resize_to => 55
111
+ end
112
+ rescue MissingSourceFile
113
+ puts $!.message
114
+ puts "no Mini Magick"
115
+ end
116
+
117
+ begin
118
+ class GD2Attachment < ActiveRecord::Base
119
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
120
+ :processor => :gd2, :thumbnails => { :thumb => [50, 51], :geometry => '31>' }, :resize_to => 55
121
+ end
122
+ rescue MissingSourceFile
123
+ puts $!.message
124
+ puts "no GD2"
125
+ end
126
+
127
+
128
+ begin
129
+ class MiniMagickAttachment < ActiveRecord::Base
130
+ has_attachment :path_prefix => 'vendor/plugins/attachment_fu/test/files',
131
+ :processor => :mini_magick, :thumbnails => { :thumb => [50, 51], :geometry => '31>' }, :resize_to => 55
132
+ end
133
+ rescue MissingSourceFile
134
+ end
135
+
136
+ begin
137
+ class S3Attachment < ActiveRecord::Base
138
+ has_attachment :storage => :s3, :processor => :rmagick, :s3_config_path => File.join(File.dirname(__FILE__), '../amazon_s3.yml')
139
+ validates_as_attachment
140
+ end
141
+
142
+ class S3WithPathPrefixAttachment < S3Attachment
143
+ has_attachment :storage => :s3, :path_prefix => 'some/custom/path/prefix', :processor => :rmagick
144
+ validates_as_attachment
145
+ end
146
+ rescue
147
+ puts "S3 error: #{$!}"
148
+ end
Binary file
@@ -0,0 +1 @@
1
+ foo
Binary file
@@ -0,0 +1,108 @@
1
+ require 'test/unit'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), '../lib/geometry')) unless Object.const_defined?(:Geometry)
3
+
4
+ class GeometryTest < Test::Unit::TestCase
5
+ def test_should_resize
6
+ assert_geometry 50, 64,
7
+ "50x50" => [39, 50],
8
+ "60x60" => [47, 60],
9
+ "100x100" => [78, 100]
10
+ end
11
+
12
+ def test_should_resize_no_width
13
+ assert_geometry 50, 64,
14
+ "x50" => [39, 50],
15
+ "x60" => [47, 60],
16
+ "x100" => [78, 100]
17
+ end
18
+
19
+ def test_should_resize_no_height
20
+ assert_geometry 50, 64,
21
+ "50" => [50, 64],
22
+ "60" => [60, 77],
23
+ "100" => [100, 128]
24
+ end
25
+
26
+ def test_should_resize_no_height_with_x
27
+ assert_geometry 50, 64,
28
+ "50x" => [50, 64],
29
+ "60x" => [60, 77],
30
+ "100x" => [100, 128]
31
+ end
32
+
33
+ def test_should_resize_with_percent
34
+ assert_geometry 50, 64,
35
+ "50x50%" => [25, 32],
36
+ "60x60%" => [30, 38],
37
+ "120x112%" => [60, 72]
38
+ end
39
+
40
+ def test_should_resize_with_percent_and_no_width
41
+ assert_geometry 50, 64,
42
+ "x50%" => [50, 32],
43
+ "x60%" => [50, 38],
44
+ "x112%" => [50, 72]
45
+ end
46
+
47
+ def test_should_resize_with_percent_and_no_height
48
+ assert_geometry 50, 64,
49
+ "50%" => [25, 32],
50
+ "60%" => [30, 38],
51
+ "120%" => [60, 77]
52
+ end
53
+
54
+ def test_should_resize_with_less
55
+ assert_geometry 50, 64,
56
+ "50x50<" => [50, 64],
57
+ "60x60<" => [50, 64],
58
+ "100x100<" => [78, 100],
59
+ "100x112<" => [88, 112],
60
+ "40x70<" => [50, 64]
61
+ end
62
+
63
+ def test_should_resize_with_less_and_no_width
64
+ assert_geometry 50, 64,
65
+ "x50<" => [50, 64],
66
+ "x60<" => [50, 64],
67
+ "x100<" => [78, 100]
68
+ end
69
+
70
+ def test_should_resize_with_less_and_no_height
71
+ assert_geometry 50, 64,
72
+ "50<" => [50, 64],
73
+ "60<" => [60, 77],
74
+ "100<" => [100, 128]
75
+ end
76
+
77
+ def test_should_resize_with_greater
78
+ assert_geometry 50, 64,
79
+ "50x50>" => [39, 50],
80
+ "60x60>" => [47, 60],
81
+ "100x100>" => [50, 64],
82
+ "100x112>" => [50, 64],
83
+ "40x70>" => [40, 51]
84
+ end
85
+
86
+ def test_should_resize_with_greater_and_no_width
87
+ assert_geometry 50, 64,
88
+ "x40>" => [31, 40],
89
+ "x60>" => [47, 60],
90
+ "x100>" => [50, 64]
91
+ end
92
+
93
+ def test_should_resize_with_greater_and_no_height
94
+ assert_geometry 50, 64,
95
+ "40>" => [40, 51],
96
+ "60>" => [50, 64],
97
+ "100>" => [50, 64]
98
+ end
99
+
100
+ protected
101
+ def assert_geometry(width, height, values)
102
+ values.each do |geo, result|
103
+ # run twice to verify the Geometry string isn't modified after a run
104
+ geo = Geometry.from_s(geo)
105
+ 2.times { assert_equal result, [width, height] / geo }
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class CoreImageTest < Test::Unit::TestCase
4
+ attachment_model CoreImageAttachment
5
+
6
+ if Object.const_defined?(:OSX)
7
+ def test_should_resize_image
8
+ attachment = upload_file :filename => '/files/rails.png'
9
+ assert_valid attachment
10
+ assert attachment.image?
11
+ # test core image thumbnail
12
+ assert_equal 42, attachment.width
13
+ assert_equal 55, attachment.height
14
+
15
+ thumb = attachment.thumbnails.detect { |t| t.filename =~ /_thumb/ }
16
+ geo = attachment.thumbnails.detect { |t| t.filename =~ /_geometry/ }
17
+
18
+ # test exact resize dimensions
19
+ assert_equal 50, thumb.width
20
+ assert_equal 51, thumb.height
21
+
22
+ # test geometry string
23
+ assert_equal 31, geo.width
24
+ assert_equal 41, geo.height
25
+
26
+ # This makes sure that we didn't overwrite the original file
27
+ # and will end up with a thumbnail instead of the original
28
+ assert_equal 42, attachment.width
29
+ assert_equal 55, attachment.height
30
+
31
+ end
32
+ else
33
+ def test_flunk
34
+ puts "CoreImage not loaded, tests not running"
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class GD2Test < Test::Unit::TestCase
4
+ attachment_model GD2Attachment
5
+
6
+ if Object.const_defined?(:GD2)
7
+ def test_should_resize_image
8
+ attachment = upload_file :filename => '/files/rails.png'
9
+ assert_valid attachment
10
+ assert attachment.image?
11
+ # test gd2 thumbnail
12
+ assert_equal 43, attachment.width
13
+ assert_equal 55, attachment.height
14
+
15
+ thumb = attachment.thumbnails.detect { |t| t.filename =~ /_thumb/ }
16
+ geo = attachment.thumbnails.detect { |t| t.filename =~ /_geometry/ }
17
+
18
+ # test exact resize dimensions
19
+ assert_equal 50, thumb.width
20
+ assert_equal 51, thumb.height
21
+
22
+ # test geometry string
23
+ assert_equal 31, geo.width
24
+ assert_equal 40, geo.height
25
+ end
26
+ else
27
+ def test_flunk
28
+ puts "GD2 not loaded, tests not running"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
2
+
3
+ class ImageScienceTest < Test::Unit::TestCase
4
+ attachment_model ImageScienceAttachment
5
+
6
+ if Object.const_defined?(:ImageScience)
7
+ def test_should_resize_image
8
+ attachment = upload_file :filename => '/files/rails.png'
9
+ assert_valid attachment
10
+ assert attachment.image?
11
+ # test image science thumbnail
12
+ assert_equal 42, attachment.width
13
+ assert_equal 55, attachment.height
14
+
15
+ thumb = attachment.thumbnails.detect { |t| t.filename =~ /_thumb/ }
16
+ geo = attachment.thumbnails.detect { |t| t.filename =~ /_geometry/ }
17
+
18
+ # test exact resize dimensions
19
+ assert_equal 50, thumb.width
20
+ assert_equal 51, thumb.height
21
+
22
+ # test geometry string
23
+ assert_equal 31, geo.width
24
+ assert_equal 41, geo.height
25
+ end
26
+ else
27
+ def test_flunk
28
+ puts "ImageScience not loaded, tests not running"
29
+ end
30
+ end
31
+ end