atd-attachment_fu 1.0.20080507
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/CHANGELOG +35 -0
- data/README +186 -0
- data/Rakefile +22 -0
- data/amazon_s3.yml.tpl +14 -0
- data/attachment_fu.gemspec +79 -0
- data/lib/geometry.rb +93 -0
- data/lib/technoweenie/attachment_fu.rb +497 -0
- data/lib/technoweenie/attachment_fu/backends/db_file_backend.rb +39 -0
- data/lib/technoweenie/attachment_fu/backends/file_system_backend.rb +101 -0
- data/lib/technoweenie/attachment_fu/backends/s3_backend.rb +303 -0
- data/lib/technoweenie/attachment_fu/processors/core_image_processor.rb +59 -0
- data/lib/technoweenie/attachment_fu/processors/gd2_processor.rb +54 -0
- data/lib/technoweenie/attachment_fu/processors/image_science_processor.rb +61 -0
- data/lib/technoweenie/attachment_fu/processors/mini_magick_processor.rb +132 -0
- data/lib/technoweenie/attachment_fu/processors/rmagick_processor.rb +54 -0
- data/rails/init.rb +16 -0
- data/test/backends/db_file_test.rb +16 -0
- data/test/backends/file_system_test.rb +80 -0
- data/test/backends/remote/s3_test.rb +119 -0
- data/test/base_attachment_tests.rb +77 -0
- data/test/basic_test.rb +71 -0
- data/test/database.yml +18 -0
- data/test/extra_attachment_test.rb +86 -0
- data/test/fixtures/attachment.rb +183 -0
- data/test/fixtures/files/fake/rails.png +0 -0
- data/test/fixtures/files/foo.txt +1 -0
- data/test/fixtures/files/rails.png +0 -0
- data/test/geometry_test.rb +108 -0
- data/test/processors/core_image_test.rb +37 -0
- data/test/processors/gd2_test.rb +31 -0
- data/test/processors/image_science_test.rb +31 -0
- data/test/processors/mini_magick_test.rb +103 -0
- data/test/processors/rmagick_test.rb +255 -0
- data/test/schema.rb +109 -0
- data/test/test_helper.rb +150 -0
- data/test/validation_test.rb +55 -0
- data/vendor/red_artisan/core_image/filters/color.rb +27 -0
- data/vendor/red_artisan/core_image/filters/effects.rb +31 -0
- data/vendor/red_artisan/core_image/filters/perspective.rb +25 -0
- data/vendor/red_artisan/core_image/filters/quality.rb +25 -0
- data/vendor/red_artisan/core_image/filters/scale.rb +47 -0
- data/vendor/red_artisan/core_image/filters/watermark.rb +32 -0
- data/vendor/red_artisan/core_image/processor.rb +123 -0
- metadata +116 -0
@@ -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
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
class MiniMagickTest < Test::Unit::TestCase
|
4
|
+
attachment_model MiniMagickAttachment
|
5
|
+
|
6
|
+
if Object.const_defined?(:MiniMagick)
|
7
|
+
def test_should_resize_image
|
8
|
+
attachment = upload_file :filename => '/files/rails.png'
|
9
|
+
assert_valid attachment
|
10
|
+
assert attachment.image?
|
11
|
+
# test MiniMagick 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
|
+
|
27
|
+
def test_should_crop_image(klass = ImageThumbnailCrop)
|
28
|
+
attachment_model klass
|
29
|
+
attachment = upload_file :filename => '/files/rails.png'
|
30
|
+
assert_valid attachment
|
31
|
+
assert attachment.image?
|
32
|
+
# has_attachment :thumbnails => { :square => "50x50c", :vertical => "30x60c", :horizontal => "60x30c"}
|
33
|
+
|
34
|
+
square = attachment.thumbnails.detect { |t| t.filename =~ /_square/ }
|
35
|
+
vertical = attachment.thumbnails.detect { |t| t.filename =~ /_vertical/ }
|
36
|
+
horizontal = attachment.thumbnails.detect { |t| t.filename =~ /_horizontal/ }
|
37
|
+
|
38
|
+
# test excat resize
|
39
|
+
assert_equal 50, square.width
|
40
|
+
assert_equal 50, square.height
|
41
|
+
|
42
|
+
assert_equal 30, vertical.width
|
43
|
+
assert_equal 60, vertical.height
|
44
|
+
|
45
|
+
assert_equal 60, horizontal.width
|
46
|
+
assert_equal 30, horizontal.height
|
47
|
+
end
|
48
|
+
|
49
|
+
# tests the first step in resize, crop the image in original size to right format
|
50
|
+
def test_should_crop_image_right(klass = ImageThumbnailCrop)
|
51
|
+
@@testcases.collect do |testcase|
|
52
|
+
image_width, image_height, thumb_width, thumb_height = testcase[:data]
|
53
|
+
image_aspect, thumb_aspect = image_width/image_height, thumb_width/thumb_height
|
54
|
+
crop_comand = klass.calculate_offset(image_width, image_height, image_aspect, thumb_width, thumb_height,thumb_aspect)
|
55
|
+
# pattern matching on crop command
|
56
|
+
if testcase.has_key?(:height)
|
57
|
+
assert crop_comand.match(/^#{image_width}x#{testcase[:height]}\+0\+#{testcase[:yoffset]}$/)
|
58
|
+
else
|
59
|
+
assert crop_comand.match(/^#{testcase[:width]}x#{image_height}\+#{testcase[:xoffset]}\+0$/)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
else
|
65
|
+
def test_flunk
|
66
|
+
puts "MiniMagick not loaded, tests not running"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
@@testcases = [
|
71
|
+
# image_aspect <= 1 && thumb_aspect >= 1
|
72
|
+
{:data => [10.0,40.0,2.0,1.0], :height => 5.0, :yoffset => 17.5}, # 1b
|
73
|
+
{:data => [10.0,40.0,1.0,1.0], :height => 10.0, :yoffset => 15.0}, # 1b
|
74
|
+
|
75
|
+
# image_aspect < 1 && thumb_aspect < 1
|
76
|
+
{:data => [10.0,40.0,1.0,2.0], :height => 20.0, :yoffset => 10.0}, # 1a
|
77
|
+
{:data => [2.0,3.0,1.0,2.0], :width => 1.5, :xoffset => 0.25}, # 1a
|
78
|
+
|
79
|
+
# image_aspect = thumb_aspect
|
80
|
+
{:data => [10.0,10.0,1.0,1.0], :height => 10.0, :yoffset => 0.0}, # QUADRAT 1c
|
81
|
+
|
82
|
+
# image_aspect >= 1 && thumb_aspect > 1 && image_aspect < thumb_aspect
|
83
|
+
{:data => [6.0,3.0,4.0,1.0], :height => 1.5, :yoffset => 0.75}, # 2b
|
84
|
+
{:data => [6.0,6.0,4.0,1.0], :height => 1.5, :yoffset => 2.25}, # 2b
|
85
|
+
|
86
|
+
# image_aspect > 1 && thumb_aspect > 1 && image_aspect > thumb_aspect
|
87
|
+
{:data => [9.0,3.0,2.0,1.0], :width => 6.0, :xoffset => 1.5}, # 2a
|
88
|
+
|
89
|
+
# image_aspect > 1 && thumb_aspect < 1 && image_aspect < thumb_aspect
|
90
|
+
{:data => [10.0,5.0,0.1,2.0], :width => 0.25, :xoffset => 4.875}, # 4
|
91
|
+
{:data => [10.0,5.0,1.0,2.0], :width => 2.5, :xoffset => 3.75}, # 4
|
92
|
+
|
93
|
+
# image_aspect > 1 && thumb_aspect > 1 && image_aspect > thumb_aspect
|
94
|
+
{:data => [9.0,3.0,2.0,1.0], :width => 6.0, :xoffset => 1.5}, # 3a
|
95
|
+
# image_aspect > 1 && thumb_aspect > 1 && image_aspect < thumb_aspect
|
96
|
+
{:data => [9.0,3.0,5.0,1.0], :height => 1.8, :yoffset => 0.6} # 3a
|
97
|
+
]
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
end
|
@@ -0,0 +1,255 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
class RmagickTest < Test::Unit::TestCase
|
4
|
+
attachment_model Attachment
|
5
|
+
|
6
|
+
if Object.const_defined?(:Magick)
|
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
|
+
#assert_equal 1784, attachment.size
|
15
|
+
assert_equal 50, attachment.width
|
16
|
+
assert_equal 64, attachment.height
|
17
|
+
assert_equal '50x64', attachment.image_size
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_should_create_image_from_uploaded_file_with_custom_content_type
|
22
|
+
assert_created do
|
23
|
+
attachment = upload_file :content_type => 'foo/bar', :filename => '/files/rails.png'
|
24
|
+
assert_valid attachment
|
25
|
+
assert !attachment.image?
|
26
|
+
assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
|
27
|
+
assert !attachment.size.zero?
|
28
|
+
#assert_equal 1784, attachment.size
|
29
|
+
assert_nil attachment.width
|
30
|
+
assert_nil attachment.height
|
31
|
+
assert_equal [], attachment.thumbnails
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_create_thumbnail
|
36
|
+
attachment = upload_file :filename => '/files/rails.png'
|
37
|
+
|
38
|
+
assert_created do
|
39
|
+
basename, ext = attachment.filename.split '.'
|
40
|
+
thumbnail = attachment.create_or_update_thumbnail(attachment.create_temp_file, 'thumb', 50, 50)
|
41
|
+
assert_valid thumbnail
|
42
|
+
assert !thumbnail.size.zero?
|
43
|
+
#assert_in_delta 4673, thumbnail.size, 2
|
44
|
+
assert_equal 50, thumbnail.width
|
45
|
+
assert_equal 50, thumbnail.height
|
46
|
+
assert_equal [thumbnail.id], attachment.thumbnails.collect(&:id)
|
47
|
+
assert_equal attachment.id, thumbnail.parent_id if thumbnail.respond_to?(:parent_id)
|
48
|
+
assert_equal "#{basename}_thumb.#{ext}", thumbnail.filename
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_create_thumbnail_with_geometry_string
|
53
|
+
attachment = upload_file :filename => '/files/rails.png'
|
54
|
+
|
55
|
+
assert_created do
|
56
|
+
basename, ext = attachment.filename.split '.'
|
57
|
+
thumbnail = attachment.create_or_update_thumbnail(attachment.create_temp_file, 'thumb', 'x50')
|
58
|
+
assert_valid thumbnail
|
59
|
+
assert !thumbnail.size.zero?
|
60
|
+
#assert_equal 3915, thumbnail.size
|
61
|
+
assert_equal 39, thumbnail.width
|
62
|
+
assert_equal 50, thumbnail.height
|
63
|
+
assert_equal [thumbnail], attachment.thumbnails
|
64
|
+
assert_equal attachment.id, thumbnail.parent_id if thumbnail.respond_to?(:parent_id)
|
65
|
+
assert_equal "#{basename}_thumb.#{ext}", thumbnail.filename
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_should_resize_image(klass = ImageAttachment)
|
70
|
+
attachment_model klass
|
71
|
+
assert_equal [50, 50], attachment_model.attachment_options[:resize_to]
|
72
|
+
attachment = upload_file :filename => '/files/rails.png'
|
73
|
+
assert_valid attachment
|
74
|
+
assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
|
75
|
+
assert attachment.image?
|
76
|
+
assert !attachment.size.zero?
|
77
|
+
#assert_in_delta 4673, attachment.size, 2
|
78
|
+
assert_equal 50, attachment.width
|
79
|
+
assert_equal 50, attachment.height
|
80
|
+
end
|
81
|
+
|
82
|
+
test_against_subclass :test_should_resize_image, ImageAttachment
|
83
|
+
|
84
|
+
def test_should_resize_image_with_geometry(klass = ImageOrPdfAttachment)
|
85
|
+
attachment_model klass
|
86
|
+
assert_equal 'x50', attachment_model.attachment_options[:resize_to]
|
87
|
+
attachment = upload_file :filename => '/files/rails.png'
|
88
|
+
assert_valid attachment
|
89
|
+
assert !attachment.db_file.new_record? if attachment.respond_to?(:db_file)
|
90
|
+
assert attachment.image?
|
91
|
+
assert !attachment.size.zero?
|
92
|
+
#assert_equal 3915, attachment.size
|
93
|
+
assert_equal 39, attachment.width
|
94
|
+
assert_equal 50, attachment.height
|
95
|
+
end
|
96
|
+
|
97
|
+
test_against_subclass :test_should_resize_image_with_geometry, ImageOrPdfAttachment
|
98
|
+
|
99
|
+
def test_should_give_correct_thumbnail_filenames(klass = ImageWithThumbsFileAttachment)
|
100
|
+
attachment_model klass
|
101
|
+
assert_created 3 do
|
102
|
+
attachment = upload_file :filename => '/files/rails.png'
|
103
|
+
thumb = attachment.thumbnails.detect { |t| t.filename =~ /_thumb/ }
|
104
|
+
geo = attachment.thumbnails.detect { |t| t.filename =~ /_geometry/ }
|
105
|
+
|
106
|
+
[attachment, thumb, geo].each { |record| assert_valid record }
|
107
|
+
|
108
|
+
assert_match /rails\.png$/, attachment.full_filename
|
109
|
+
assert_match /rails_geometry\.png$/, attachment.full_filename(:geometry)
|
110
|
+
assert_match /rails_thumb\.png$/, attachment.full_filename(:thumb)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
test_against_subclass :test_should_give_correct_thumbnail_filenames, ImageWithThumbsFileAttachment
|
115
|
+
|
116
|
+
def test_should_automatically_create_thumbnails(klass = ImageWithThumbsAttachment)
|
117
|
+
attachment_model klass
|
118
|
+
assert_created 3 do
|
119
|
+
attachment = upload_file :filename => '/files/rails.png'
|
120
|
+
assert_valid attachment
|
121
|
+
assert !attachment.size.zero?
|
122
|
+
#assert_equal 1784, attachment.size
|
123
|
+
assert_equal 55, attachment.width
|
124
|
+
assert_equal 55, attachment.height
|
125
|
+
assert_equal 2, attachment.thumbnails.length
|
126
|
+
# assert_equal 1.0, attachment.aspect_ratio
|
127
|
+
|
128
|
+
thumb = attachment.thumbnails.detect { |t| t.filename =~ /_thumb/ }
|
129
|
+
assert !thumb.new_record?, thumb.errors.full_messages.join("\n")
|
130
|
+
assert !thumb.size.zero?
|
131
|
+
#assert_in_delta 4673, thumb.size, 2
|
132
|
+
assert_equal 50, thumb.width
|
133
|
+
assert_equal 50, thumb.height
|
134
|
+
# assert_equal 1.0, thumb.aspect_ratio
|
135
|
+
|
136
|
+
geo = attachment.thumbnails.detect { |t| t.filename =~ /_geometry/ }
|
137
|
+
assert !geo.new_record?, geo.errors.full_messages.join("\n")
|
138
|
+
assert !geo.size.zero?
|
139
|
+
#assert_equal 3915, geo.size
|
140
|
+
assert_equal 50, geo.width
|
141
|
+
assert_equal 50, geo.height
|
142
|
+
# assert_equal 1.0, geo.aspect_ratio
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
test_against_subclass :test_should_automatically_create_thumbnails, ImageWithThumbsAttachment
|
147
|
+
|
148
|
+
# same as above method, but test it on a file model
|
149
|
+
test_against_class :test_should_automatically_create_thumbnails, ImageWithThumbsFileAttachment
|
150
|
+
test_against_subclass :test_should_automatically_create_thumbnails_on_class, ImageWithThumbsFileAttachment
|
151
|
+
|
152
|
+
def test_should_use_thumbnail_subclass(klass = ImageWithThumbsClassFileAttachment)
|
153
|
+
attachment_model klass
|
154
|
+
attachment = nil
|
155
|
+
assert_difference ImageThumbnail, :count do
|
156
|
+
attachment = upload_file :filename => '/files/rails.png'
|
157
|
+
assert_valid attachment
|
158
|
+
end
|
159
|
+
assert_kind_of ImageThumbnail, attachment.thumbnails.first
|
160
|
+
if attachment.thumbnails.first.respond_to?(:parent)
|
161
|
+
assert_equal attachment.id, attachment.thumbnails.first.parent.id
|
162
|
+
assert_kind_of FileAttachment, attachment.thumbnails.first.parent
|
163
|
+
end
|
164
|
+
assert_equal 'rails_thumb.png', attachment.thumbnails.first.filename
|
165
|
+
assert_equal attachment.thumbnails.first.full_filename, attachment.full_filename(attachment.thumbnails.first.thumbnail),
|
166
|
+
"#full_filename does not use thumbnail class' path."
|
167
|
+
assert_equal attachment.destroy, attachment
|
168
|
+
end
|
169
|
+
|
170
|
+
test_against_subclass :test_should_use_thumbnail_subclass, ImageWithThumbsClassFileAttachment
|
171
|
+
|
172
|
+
def test_should_remove_old_thumbnail_files_when_updating(klass = ImageWithThumbsFileAttachment)
|
173
|
+
attachment_model klass
|
174
|
+
attachment = nil
|
175
|
+
assert_created 3 do
|
176
|
+
attachment = upload_file :filename => '/files/rails.png'
|
177
|
+
end
|
178
|
+
|
179
|
+
old_filenames = [attachment.full_filename] + attachment.thumbnails.collect(&:full_filename)
|
180
|
+
|
181
|
+
assert_not_created do
|
182
|
+
use_temp_file "files/rails.png" do |file|
|
183
|
+
attachment.filename = 'rails2.png'
|
184
|
+
attachment.temp_paths.unshift File.join(fixture_path, file)
|
185
|
+
attachment.save
|
186
|
+
new_filenames = [attachment.reload.full_filename] + attachment.thumbnails.collect { |t| t.reload.full_filename }
|
187
|
+
new_filenames.each { |f| assert File.exists?(f), "#{f} does not exist" }
|
188
|
+
old_filenames.each { |f| assert !File.exists?(f), "#{f} still exists" }
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
test_against_subclass :test_should_remove_old_thumbnail_files_when_updating, ImageWithThumbsFileAttachment
|
194
|
+
|
195
|
+
def test_should_delete_file_when_in_file_system_when_attachment_record_destroyed(klass = ImageWithThumbsFileAttachment)
|
196
|
+
attachment_model klass
|
197
|
+
attachment = upload_file :filename => '/files/rails.png'
|
198
|
+
filenames = [attachment.full_filename] + attachment.thumbnails.collect(&:full_filename)
|
199
|
+
filenames.each { |f| assert File.exists?(f), "#{f} never existed to delete on destroy" }
|
200
|
+
attachment.destroy
|
201
|
+
filenames.each { |f| assert !File.exists?(f), "#{f} still exists" }
|
202
|
+
end
|
203
|
+
|
204
|
+
test_against_subclass :test_should_delete_file_when_in_file_system_when_attachment_record_destroyed, ImageWithThumbsFileAttachment
|
205
|
+
|
206
|
+
def test_should_have_full_filename_method(klass = FileAttachment)
|
207
|
+
attachment_model klass
|
208
|
+
attachment = upload_file :filename => '/files/rails.png'
|
209
|
+
assert_respond_to attachment, :full_filename
|
210
|
+
end
|
211
|
+
|
212
|
+
test_against_subclass :test_should_have_full_filename_method, FileAttachment
|
213
|
+
|
214
|
+
def test_should_overwrite_old_thumbnail_records_when_updating(klass = ImageWithThumbsAttachment)
|
215
|
+
attachment_model klass
|
216
|
+
attachment = nil
|
217
|
+
assert_created 3 do
|
218
|
+
attachment = upload_file :filename => '/files/rails.png'
|
219
|
+
end
|
220
|
+
assert_not_created do # no new db_file records
|
221
|
+
use_temp_file "files/rails.png" do |file|
|
222
|
+
attachment.filename = 'rails2.png'
|
223
|
+
# The above test (#test_should_have_full_filename_method) to pass before be can set the temp_path below --
|
224
|
+
# #temp_path calls #full_filename, which is not getting mixed into the attachment. Maybe we don't need to
|
225
|
+
# set temp_path at all?
|
226
|
+
#
|
227
|
+
# attachment.temp_paths.unshift File.join(fixture_path, file)
|
228
|
+
attachment.save!
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
test_against_subclass :test_should_overwrite_old_thumbnail_records_when_updating, ImageWithThumbsAttachment
|
234
|
+
|
235
|
+
def test_should_overwrite_old_thumbnail_records_when_renaming(klass = ImageWithThumbsAttachment)
|
236
|
+
attachment_model klass
|
237
|
+
attachment = nil
|
238
|
+
assert_created 3 do
|
239
|
+
attachment = upload_file :class => klass, :filename => '/files/rails.png'
|
240
|
+
end
|
241
|
+
assert_not_created do # no new db_file records
|
242
|
+
attachment.filename = 'rails2.png'
|
243
|
+
attachment.save
|
244
|
+
assert !attachment.reload.size.zero?
|
245
|
+
assert_equal 'rails2.png', attachment.filename
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
test_against_subclass :test_should_overwrite_old_thumbnail_records_when_renaming, ImageWithThumbsAttachment
|
250
|
+
else
|
251
|
+
def test_flunk
|
252
|
+
puts "RMagick not installed, no tests running"
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|