file_column_with_s3 0.2.0 → 0.3.0

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/magick_test.rb DELETED
@@ -1,383 +0,0 @@
1
- begin
2
- require File.dirname(__FILE__) + '/abstract_unit'
3
- require File.dirname(__FILE__) + '/fixtures/entry'
4
-
5
- class AbstractRMagickTest < Test::Unit::TestCase
6
- def teardown
7
- FileUtils.rm_rf File.dirname(__FILE__)+"/public/entry/"
8
- end
9
-
10
- def test_truth
11
- assert true
12
- end
13
-
14
- private
15
-
16
- def read_image(path)
17
- Magick::Image::read(path).first
18
- end
19
-
20
- def assert_max_image_size(img, s)
21
- assert img.columns <= s, "img has #{img.columns} columns, expected: #{s}"
22
- assert img.rows <= s, "img has #{img.rows} rows, expected: #{s}"
23
- assert_equal s, [img.columns, img.rows].max
24
- end
25
- end
26
-
27
- class RMagickSimpleTest < AbstractRMagickTest
28
- def setup
29
- Entry.file_column :image, :magick => { :geometry => "100x100" }
30
- end
31
-
32
- def test_simple_resize_without_save
33
- e = Entry.new
34
- e.image = upload(f("kerb.jpg"))
35
-
36
- img = read_image(e.image)
37
- assert_max_image_size img, 100
38
- end
39
-
40
- def test_simple_resize_with_save
41
- e = Entry.new
42
- e.image = upload(f("kerb.jpg"))
43
- assert e.save
44
- e.reload
45
-
46
- img = read_image(e.image)
47
- assert_max_image_size img, 100
48
- end
49
-
50
- def test_resize_on_saved_image
51
- Entry.file_column :image, :magick => { :geometry => "100x100" }
52
-
53
- e = Entry.new
54
- e.image = upload(f("skanthak.png"))
55
- assert e.save
56
- e.reload
57
- old_path = e.image
58
-
59
- e.image = upload(f("kerb.jpg"))
60
- assert e.save
61
- assert "kerb.jpg", File.basename(e.image)
62
- assert !File.exists?(old_path), "old image '#{old_path}' still exists"
63
-
64
- img = read_image(e.image)
65
- assert_max_image_size img, 100
66
- end
67
-
68
- def test_invalid_image
69
- e = Entry.new
70
- assert_nothing_raised { e.image = upload(f("invalid-image.jpg")) }
71
- assert !e.valid?
72
- end
73
-
74
- def test_serializable
75
- e = Entry.new
76
- e.image = upload(f("skanthak.png"))
77
- assert_nothing_raised {
78
- flash = Marshal.dump(e)
79
- e = Marshal.load(flash)
80
- }
81
- assert File.exists?(e.image)
82
- end
83
-
84
- def test_imagemagick_still_usable
85
- assert_nothing_raised {
86
- img = Magick::Image::read(file_path("skanthak.png")).first
87
- assert img.kind_of?(Magick::Image)
88
- }
89
- end
90
- end
91
-
92
- class RMagickRequiresImageTest < AbstractRMagickTest
93
- def setup
94
- Entry.file_column :image, :magick => {
95
- :size => "100x100>",
96
- :image_required => false,
97
- :versions => {
98
- :thumb => "80x80>",
99
- :large => {:size => "200x200>", :lazy => true}
100
- }
101
- }
102
- end
103
-
104
- def test_image_required_with_image
105
- e = Entry.new(:image => upload(f("skanthak.png")))
106
- assert_max_image_size read_image(e.image), 100
107
- assert e.valid?
108
- end
109
-
110
- def test_image_required_with_invalid_image
111
- e = Entry.new(:image => upload(f("invalid-image.jpg")))
112
- assert e.valid?, "did not ignore invalid image"
113
- assert FileUtils.identical?(e.image, f("invalid-image.jpg")), "uploaded file has not been left alone"
114
- end
115
-
116
- def test_versions_with_invalid_image
117
- e = Entry.new(:image => upload(f("invalid-image.jpg")))
118
- assert e.valid?
119
-
120
- image_state = e.send(:image_state)
121
- assert_nil image_state.create_magick_version_if_needed(:thumb)
122
- assert_nil image_state.create_magick_version_if_needed(:large)
123
- assert_nil image_state.create_magick_version_if_needed("300x300>")
124
- end
125
- end
126
-
127
- class RMagickCustomAttributesTest < AbstractRMagickTest
128
- def assert_image_property(img, property, value, text = nil)
129
- assert File.exists?(img), "the image does not exist"
130
- assert_equal value, read_image(img).send(property), text
131
- end
132
-
133
- def test_simple_attributes
134
- Entry.file_column :image, :magick => { :attributes => { :quality => 20 } }
135
- e = Entry.new("image" => upload(f("kerb.jpg")))
136
- assert_image_property e.image, :quality, 20, "the quality was not set"
137
- end
138
-
139
- def test_version_attributes
140
- Entry.file_column :image, :magick => {
141
- :versions => {
142
- :thumb => { :attributes => { :quality => 20 } }
143
- }
144
- }
145
- e = Entry.new("image" => upload(f("kerb.jpg")))
146
- assert_image_property e.image("thumb"), :quality, 20, "the quality was not set"
147
- end
148
-
149
- def test_lazy_attributes
150
- Entry.file_column :image, :magick => {
151
- :versions => {
152
- :thumb => { :attributes => { :quality => 20 }, :lazy => true }
153
- }
154
- }
155
- e = Entry.new("image" => upload(f("kerb.jpg")))
156
- e.send(:image_state).create_magick_version_if_needed(:thumb)
157
- assert_image_property e.image("thumb"), :quality, 20, "the quality was not set"
158
- end
159
- end
160
-
161
- class RMagickVersionsTest < AbstractRMagickTest
162
- def setup
163
- Entry.file_column :image, :magick => {:geometry => "200x200",
164
- :versions => {
165
- :thumb => "50x50",
166
- :medium => {:geometry => "100x100", :name => "100_100"},
167
- :large => {:geometry => "150x150", :lazy => true}
168
- }
169
- }
170
- end
171
-
172
-
173
- def test_should_create_thumb
174
- e = Entry.new("image" => upload(f("skanthak.png")))
175
-
176
- assert File.exists?(e.image("thumb")), "thumb-nail not created"
177
-
178
- assert_max_image_size read_image(e.image("thumb")), 50
179
- end
180
-
181
- def test_version_name_can_be_different_from_key
182
- e = Entry.new("image" => upload(f("skanthak.png")))
183
-
184
- assert File.exists?(e.image("100_100"))
185
- assert !File.exists?(e.image("medium"))
186
- end
187
-
188
- def test_should_not_create_lazy_versions
189
- e = Entry.new("image" => upload(f("skanthak.png")))
190
- assert !File.exists?(e.image("large")), "lazy versions should not be created unless needed"
191
- end
192
-
193
- def test_should_create_lazy_version_on_demand
194
- e = Entry.new("image" => upload(f("skanthak.png")))
195
-
196
- e.send(:image_state).create_magick_version_if_needed(:large)
197
-
198
- assert File.exists?(e.image("large")), "lazy version should be created on demand"
199
-
200
- assert_max_image_size read_image(e.image("large")), 150
201
- end
202
-
203
- def test_generated_name_should_not_change
204
- e = Entry.new("image" => upload(f("skanthak.png")))
205
-
206
- name1 = e.send(:image_state).create_magick_version_if_needed("50x50")
207
- name2 = e.send(:image_state).create_magick_version_if_needed("50x50")
208
- name3 = e.send(:image_state).create_magick_version_if_needed(:geometry => "50x50")
209
- assert_equal name1, name2, "hash value has changed"
210
- assert_equal name1, name3, "hash value has changed"
211
- end
212
-
213
- def test_should_create_version_with_string
214
- e = Entry.new("image" => upload(f("skanthak.png")))
215
-
216
- name = e.send(:image_state).create_magick_version_if_needed("32x32")
217
-
218
- assert File.exists?(e.image(name))
219
-
220
- assert_max_image_size read_image(e.image(name)), 32
221
- end
222
-
223
- def test_should_create_safe_auto_id
224
- e = Entry.new("image" => upload(f("skanthak.png")))
225
-
226
- name = e.send(:image_state).create_magick_version_if_needed("32x32")
227
-
228
- assert_match /^[a-zA-Z0-9]+$/, name
229
- end
230
- end
231
-
232
- class RMagickCroppingTest < AbstractRMagickTest
233
- def setup
234
- Entry.file_column :image, :magick => {:geometry => "200x200",
235
- :versions => {
236
- :thumb => {:crop => "1:1", :geometry => "50x50"}
237
- }
238
- }
239
- end
240
-
241
- def test_should_crop_image_on_upload
242
- e = Entry.new("image" => upload(f("skanthak.png")))
243
-
244
- img = read_image(e.image("thumb"))
245
-
246
- assert_equal 50, img.rows
247
- assert_equal 50, img.columns
248
- end
249
-
250
- end
251
-
252
- class UrlForImageColumnTest < AbstractRMagickTest
253
- include FileColumnHelper
254
-
255
- def setup
256
- Entry.file_column :image, :magick => {
257
- :versions => {:thumb => "50x50"}
258
- }
259
- @request = RequestMock.new
260
- end
261
-
262
- def test_should_use_version_on_symbol_option
263
- e = Entry.new(:image => upload(f("skanthak.png")))
264
-
265
- url = url_for_image_column(e, "image", :thumb)
266
- assert_match %r{^/entry/image/tmp/.+/thumb/skanthak.png$}, url
267
- end
268
-
269
- def test_should_use_string_as_size
270
- e = Entry.new(:image => upload(f("skanthak.png")))
271
-
272
- url = url_for_image_column(e, "image", "50x50")
273
-
274
- assert_match %r{^/entry/image/tmp/.+/.+/skanthak.png$}, url
275
-
276
- url =~ /\/([^\/]+)\/skanthak.png$/
277
- dirname = $1
278
-
279
- assert_max_image_size read_image(e.image(dirname)), 50
280
- end
281
-
282
- def test_should_accept_version_hash
283
- e = Entry.new(:image => upload(f("skanthak.png")))
284
-
285
- url = url_for_image_column(e, "image", :size => "50x50", :crop => "1:1", :name => "small")
286
-
287
- assert_match %r{^/entry/image/tmp/.+/small/skanthak.png$}, url
288
-
289
- img = read_image(e.image("small"))
290
- assert_equal 50, img.rows
291
- assert_equal 50, img.columns
292
- end
293
- end
294
-
295
- class RMagickPermissionsTest < AbstractRMagickTest
296
- def setup
297
- Entry.file_column :image, :magick => {:geometry => "200x200",
298
- :versions => {
299
- :thumb => {:crop => "1:1", :geometry => "50x50"}
300
- }
301
- }, :permissions => 0616
302
- end
303
-
304
- def check_permissions(e)
305
- assert_equal 0616, (File.stat(e.image).mode & 0777)
306
- assert_equal 0616, (File.stat(e.image("thumb")).mode & 0777)
307
- end
308
-
309
- def test_permissions_with_rmagick
310
- e = Entry.new(:image => upload(f("skanthak.png")))
311
-
312
- check_permissions e
313
-
314
- assert e.save
315
-
316
- check_permissions e
317
- end
318
- end
319
-
320
- class Entry
321
- def transform_grey(img)
322
- img.quantize(256, Magick::GRAYColorspace)
323
- end
324
- end
325
-
326
- class RMagickTransformationTest < AbstractRMagickTest
327
- def assert_transformed(image)
328
- assert File.exists?(image), "the image does not exist"
329
- assert 256 > read_image(image).number_colors, "the number of colors was not changed"
330
- end
331
-
332
- def test_simple_transformation
333
- Entry.file_column :image, :magick => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
334
- e = Entry.new("image" => upload(f("skanthak.png")))
335
- assert_transformed(e.image)
336
- end
337
-
338
- def test_simple_version_transformation
339
- Entry.file_column :image, :magick => {
340
- :versions => { :thumb => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
341
- }
342
- e = Entry.new("image" => upload(f("skanthak.png")))
343
- assert_transformed(e.image("thumb"))
344
- end
345
-
346
- def test_complex_version_transformation
347
- Entry.file_column :image, :magick => {
348
- :versions => {
349
- :thumb => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) } }
350
- }
351
- }
352
- e = Entry.new("image" => upload(f("skanthak.png")))
353
- assert_transformed(e.image("thumb"))
354
- end
355
-
356
- def test_lazy_transformation
357
- Entry.file_column :image, :magick => {
358
- :versions => {
359
- :thumb => { :transformation => Proc.new { |image| image.quantize(256, Magick::GRAYColorspace) }, :lazy => true }
360
- }
361
- }
362
- e = Entry.new("image" => upload(f("skanthak.png")))
363
- e.send(:image_state).create_magick_version_if_needed(:thumb)
364
- assert_transformed(e.image("thumb"))
365
- end
366
-
367
- def test_simple_callback_transformation
368
- Entry.file_column :image, :magick => :transform_grey
369
- e = Entry.new(:image => upload(f("skanthak.png")))
370
- assert_transformed(e.image)
371
- end
372
-
373
- def test_complex_callback_transformation
374
- Entry.file_column :image, :magick => { :transformation => :transform_grey }
375
- e = Entry.new(:image => upload(f("skanthak.png")))
376
- assert_transformed(e.image)
377
- end
378
- end
379
-
380
- rescue LoadError
381
- puts "Cannot find RMagick gem"
382
- puts "Needs RMagick gem to run these tests and support image thumbnails with file_column"
383
- end
@@ -1,21 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_unit'
2
- require File.dirname(__FILE__) + '/fixtures/entry'
3
-
4
- class RMagickViewOnlyTest < Test::Unit::TestCase
5
- include FileColumnHelper
6
-
7
- def setup
8
- Entry.file_column :image
9
- @request = RequestMock.new
10
- end
11
-
12
- def teardown
13
- FileUtils.rm_rf File.dirname(__FILE__)+"/public/entry/"
14
- end
15
-
16
- def test_url_for_image_column_without_model_versions
17
- e = Entry.new(:image => upload(f("skanthak.png")))
18
-
19
- assert_nothing_raised { url_for_image_column e, "image", "50x50" }
20
- end
21
- end