Commit a9898a1cf84da1323101e3f8479c972d00eced67
1 parent
2638f65f
Exists in
master
and in
29 other branches
rails3: fix uploaded_file tests
PS1: the monkey_patch is not being loaded. PS2: there are still some tests failing due to ActionTracker bug.
Showing
3 changed files
with
63 additions
and
33 deletions
Show diff stats
app/models/uploaded_file.rb
@@ -6,6 +6,8 @@ require 'short_filename' | @@ -6,6 +6,8 @@ require 'short_filename' | ||
6 | # of the file itself is kept. (FIXME?) | 6 | # of the file itself is kept. (FIXME?) |
7 | class UploadedFile < Article | 7 | class UploadedFile < Article |
8 | 8 | ||
9 | + attr_accessible :uploaded_data | ||
10 | + | ||
9 | def self.type_name | 11 | def self.type_name |
10 | _('File') | 12 | _('File') |
11 | end | 13 | end |
@@ -31,7 +33,7 @@ class UploadedFile < Article | @@ -31,7 +33,7 @@ class UploadedFile < Article | ||
31 | end | 33 | end |
32 | 34 | ||
33 | def thumbnail_path | 35 | def thumbnail_path |
34 | - self.image? ? self.full_filename(:display).gsub(Rails.root.join('public'), '') : nil | 36 | + self.image? ? self.full_filename(:display).to_s.gsub(Rails.root.join('public'), '') : nil |
35 | end | 37 | end |
36 | 38 | ||
37 | def display_title | 39 | def display_title |
test/unit/uploaded_file_test.rb
@@ -50,35 +50,35 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -50,35 +50,35 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
50 | end | 50 | end |
51 | 51 | ||
52 | should 'properly save images' do | 52 | should 'properly save images' do |
53 | - file = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 53 | + file = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
54 | file.profile = profile | 54 | file.profile = profile |
55 | assert file.save | 55 | assert file.save |
56 | assert file.is_image | 56 | assert file.is_image |
57 | end | 57 | end |
58 | 58 | ||
59 | should 'has attachment_fu validation options' do | 59 | should 'has attachment_fu validation options' do |
60 | - file = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 60 | + file = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
61 | assert_respond_to file, :attachment_validation_options | 61 | assert_respond_to file, :attachment_validation_options |
62 | end | 62 | end |
63 | 63 | ||
64 | should 'has attachment_fu validation option for size' do | 64 | should 'has attachment_fu validation option for size' do |
65 | - file = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 65 | + file = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
66 | assert_includes file.attachment_validation_options, :size | 66 | assert_includes file.attachment_validation_options, :size |
67 | end | 67 | end |
68 | 68 | ||
69 | should 'can display hits' do | 69 | should 'can display hits' do |
70 | - file = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 70 | + file = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
71 | assert_equal false, file.can_display_hits? | 71 | assert_equal false, file.can_display_hits? |
72 | end | 72 | end |
73 | 73 | ||
74 | should 'not upload files bigger than max_size' do | 74 | should 'not upload files bigger than max_size' do |
75 | - f = UploadedFile.new(:profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 75 | + f = build(UploadedFile, :profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
76 | f.expects(:size).returns(UploadedFile.attachment_options[:max_size] + 1024) | 76 | f.expects(:size).returns(UploadedFile.attachment_options[:max_size] + 1024) |
77 | assert !f.valid? | 77 | assert !f.valid? |
78 | end | 78 | end |
79 | 79 | ||
80 | should 'upload files smaller than max_size' do | 80 | should 'upload files smaller than max_size' do |
81 | - f = UploadedFile.new(:profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 81 | + f = build(UploadedFile, :profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
82 | f.expects(:size).returns(UploadedFile.attachment_options[:max_size] - 1024) | 82 | f.expects(:size).returns(UploadedFile.attachment_options[:max_size] - 1024) |
83 | assert f.valid? | 83 | assert f.valid? |
84 | end | 84 | end |
@@ -86,16 +86,18 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -86,16 +86,18 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
86 | should 'create icon when created in folder' do | 86 | should 'create icon when created in folder' do |
87 | p = create_user('test_user').person | 87 | p = create_user('test_user').person |
88 | f = fast_create(Folder, :name => 'test_folder', :profile_id => p.id) | 88 | f = fast_create(Folder, :name => 'test_folder', :profile_id => p.id) |
89 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent_id => f.id, :profile => p) | 89 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent_id => f.id, :profile => p) |
90 | 90 | ||
91 | process_delayed_job_queue | 91 | process_delayed_job_queue |
92 | - assert File.exists?(UploadedFile.find(file.id).public_filename(:icon)) | 92 | + |
93 | + file.reload | ||
94 | + assert File.exists?(file.public_filename(:icon)) | ||
93 | file.destroy | 95 | file.destroy |
94 | end | 96 | end |
95 | 97 | ||
96 | should 'create icon when not created in folder' do | 98 | should 'create icon when not created in folder' do |
97 | p = create_user('test_user').person | 99 | p = create_user('test_user').person |
98 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => p) | 100 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => p) |
99 | 101 | ||
100 | process_delayed_job_queue | 102 | process_delayed_job_queue |
101 | assert File.exists?(UploadedFile.find(file.id).public_filename(:icon)) | 103 | assert File.exists?(UploadedFile.find(file.id).public_filename(:icon)) |
@@ -103,7 +105,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -103,7 +105,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
103 | end | 105 | end |
104 | 106 | ||
105 | should 'match max_size in validates message of size field' do | 107 | should 'match max_size in validates message of size field' do |
106 | - up = UploadedFile.new(:filename => 'fake_filename.png') | 108 | + up = build(UploadedFile, :filename => 'fake_filename.png') |
107 | up.valid? | 109 | up.valid? |
108 | 110 | ||
109 | assert_match /#{UploadedFile.max_size.to_humanreadable}/, up.errors[:size] | 111 | assert_match /#{UploadedFile.max_size.to_humanreadable}/, up.errors[:size] |
@@ -111,7 +113,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -111,7 +113,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
111 | 113 | ||
112 | should 'display link to download of non-image files' do | 114 | should 'display link to download of non-image files' do |
113 | p = create_user('test_user').person | 115 | p = create_user('test_user').person |
114 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => p) | 116 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => p) |
115 | 117 | ||
116 | stubs(:content_tag).returns('link') | 118 | stubs(:content_tag).returns('link') |
117 | expects(:link_to).with(file.name, file.url, :class => file.css_class_name) | 119 | expects(:link_to).with(file.name, file.url, :class => file.css_class_name) |
@@ -120,7 +122,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -120,7 +122,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
120 | end | 122 | end |
121 | 123 | ||
122 | should 'have title' do | 124 | should 'have title' do |
123 | - assert_equal 'my title', UploadedFile.new(:title => 'my title').title | 125 | + assert_equal 'my title', build(UploadedFile, :title => 'my title').title |
124 | end | 126 | end |
125 | 127 | ||
126 | should 'limit title to 140 characters' do | 128 | should 'limit title to 140 characters' do |
@@ -135,7 +137,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -135,7 +137,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
135 | end | 137 | end |
136 | 138 | ||
137 | should 'always provide a display title' do | 139 | should 'always provide a display title' do |
138 | - upload = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain')) | 140 | + upload = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain')) |
139 | assert_equal 'test.txt', upload.display_title | 141 | assert_equal 'test.txt', upload.display_title |
140 | upload.title = 'My text file' | 142 | upload.title = 'My text file' |
141 | assert_equal 'My text file', upload.display_title | 143 | assert_equal 'My text file', upload.display_title |
@@ -151,13 +153,13 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -151,13 +153,13 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
151 | end | 153 | end |
152 | 154 | ||
153 | should 'use name as title by default but cut down the title' do | 155 | should 'use name as title by default but cut down the title' do |
154 | - upload = UploadedFile.new(:uploaded_data => fixture_file_upload('/files/AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.txt')) | 156 | + upload = build(UploadedFile, :uploaded_data => fixture_file_upload('/files/AGENDA_CULTURA_-_FESTA_DE_VAQUEIROS_PONTO_DE_SERRA_PRETA_BAIXA.txt')) |
155 | upload.valid? | 157 | upload.valid? |
156 | assert_nil upload.errors[:title] | 158 | assert_nil upload.errors[:title] |
157 | end | 159 | end |
158 | 160 | ||
159 | should 'create thumbnails after processing jobs' do | 161 | should 'create thumbnails after processing jobs' do |
160 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) | 162 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) |
161 | 163 | ||
162 | process_delayed_job_queue | 164 | process_delayed_job_queue |
163 | 165 | ||
@@ -168,7 +170,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -168,7 +170,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
168 | end | 170 | end |
169 | 171 | ||
170 | should 'set thumbnails_processed to true after creating thumbnails' do | 172 | should 'set thumbnails_processed to true after creating thumbnails' do |
171 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) | 173 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) |
172 | 174 | ||
173 | process_delayed_job_queue | 175 | process_delayed_job_queue |
174 | 176 | ||
@@ -198,7 +200,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -198,7 +200,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
198 | end | 200 | end |
199 | 201 | ||
200 | should 'return image thumbnail if thumbnails were processed' do | 202 | should 'return image thumbnail if thumbnails were processed' do |
201 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) | 203 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => profile) |
202 | process_delayed_job_queue | 204 | process_delayed_job_queue |
203 | 205 | ||
204 | assert_match(/rails_thumb.png/, UploadedFile.find(file.id).public_filename(:thumb)) | 206 | assert_match(/rails_thumb.png/, UploadedFile.find(file.id).public_filename(:thumb)) |
@@ -214,7 +216,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -214,7 +216,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
214 | end | 216 | end |
215 | 217 | ||
216 | should 'store width and height after processing' do | 218 | should 'store width and height after processing' do |
217 | - file = UploadedFile.create!(:profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) | 219 | + file = create(UploadedFile, :profile => @profile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png')) |
218 | file.create_thumbnails | 220 | file.create_thumbnails |
219 | 221 | ||
220 | file = UploadedFile.find(file.id) | 222 | file = UploadedFile.find(file.id) |
@@ -241,7 +243,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -241,7 +243,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
241 | 243 | ||
242 | should 'track action when a published image is uploaded in a gallery' do | 244 | should 'track action when a published image is uploaded in a gallery' do |
243 | p = fast_create(Gallery, :profile_id => @profile.id) | 245 | p = fast_create(Gallery, :profile_id => @profile.id) |
244 | - f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile) | 246 | + f = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile) |
245 | ta = ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | 247 | ta = ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) |
246 | assert_kind_of String, ta.get_thumbnail_path[0] | 248 | assert_kind_of String, ta.get_thumbnail_path[0] |
247 | assert_equal [f.reload.view_url], ta.get_view_url | 249 | assert_equal [f.reload.view_url], ta.get_view_url |
@@ -252,26 +254,26 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -252,26 +254,26 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
252 | should 'not track action when is not image' do | 254 | should 'not track action when is not image' do |
253 | ActionTracker::Record.delete_all | 255 | ActionTracker::Record.delete_all |
254 | p = fast_create(Gallery, :profile_id => @profile.id) | 256 | p = fast_create(Gallery, :profile_id => @profile.id) |
255 | - f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :parent => p, :profile => @profile) | 257 | + f = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :parent => p, :profile => @profile) |
256 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | 258 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) |
257 | end | 259 | end |
258 | 260 | ||
259 | should 'not track action when has no parent' do | 261 | should 'not track action when has no parent' do |
260 | - f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => nil, :profile => @profile) | 262 | + f = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => nil, :profile => @profile) |
261 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | 263 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) |
262 | end | 264 | end |
263 | 265 | ||
264 | should 'not track action when is not published' do | 266 | should 'not track action when is not published' do |
265 | ActionTracker::Record.delete_all | 267 | ActionTracker::Record.delete_all |
266 | p = fast_create(Gallery, :profile_id => @profile.id) | 268 | p = fast_create(Gallery, :profile_id => @profile.id) |
267 | - f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile, :published => false) | 269 | + f = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile, :published => false) |
268 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | 270 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) |
269 | end | 271 | end |
270 | 272 | ||
271 | should 'not track action when parent is not gallery' do | 273 | should 'not track action when parent is not gallery' do |
272 | ActionTracker::Record.delete_all | 274 | ActionTracker::Record.delete_all |
273 | p = fast_create(Folder, :profile_id => @profile.id) | 275 | p = fast_create(Folder, :profile_id => @profile.id) |
274 | - f = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile) | 276 | + f = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => p, :profile => @profile) |
275 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) | 277 | assert_nil ActionTracker::Record.last(:conditions => { :verb => "upload_image" }) |
276 | end | 278 | end |
277 | 279 | ||
@@ -295,11 +297,11 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -295,11 +297,11 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
295 | 297 | ||
296 | should 'upload to a folder with same name as the schema if database is postgresql' do | 298 | should 'upload to a folder with same name as the schema if database is postgresql' do |
297 | uses_postgresql 'image_schema_one' | 299 | uses_postgresql 'image_schema_one' |
298 | - file1 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) | 300 | + file1 = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) |
299 | process_delayed_job_queue | 301 | process_delayed_job_queue |
300 | assert_match(/image_schema_one\/\d{4}\/\d{4}\/rails.png/, UploadedFile.find(file1.id).public_filename) | 302 | assert_match(/image_schema_one\/\d{4}\/\d{4}\/rails.png/, UploadedFile.find(file1.id).public_filename) |
301 | uses_postgresql 'image_schema_two' | 303 | uses_postgresql 'image_schema_two' |
302 | - file2 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => @profile) | 304 | + file2 = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => @profile) |
303 | assert_match(/image_schema_two\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file2.id).public_filename) | 305 | assert_match(/image_schema_two\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file2.id).public_filename) |
304 | file1.destroy | 306 | file1.destroy |
305 | file2.destroy | 307 | file2.destroy |
@@ -307,13 +309,13 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -307,13 +309,13 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
307 | end | 309 | end |
308 | 310 | ||
309 | should 'return extension' do | 311 | should 'return extension' do |
310 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) | 312 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) |
311 | assert_equal 'png', file.extension | 313 | assert_equal 'png', file.extension |
312 | end | 314 | end |
313 | 315 | ||
314 | should 'upload to path prefix folder if database is not postgresql' do | 316 | should 'upload to path prefix folder if database is not postgresql' do |
315 | uses_sqlite | 317 | uses_sqlite |
316 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => @profile) | 318 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), :profile => @profile) |
317 | assert_match(/\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file.id).public_filename) | 319 | assert_match(/\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file.id).public_filename) |
318 | assert_no_match(/test_schema\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file.id).public_filename) | 320 | assert_no_match(/test_schema\/\d{4}\/\d{4}\/test.txt/, UploadedFile.find(file.id).public_filename) |
319 | file.destroy | 321 | file.destroy |
@@ -321,7 +323,7 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -321,7 +323,7 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
321 | 323 | ||
322 | should 'upload thumbnails to a folder with same name as the schema if database is postgresql' do | 324 | should 'upload thumbnails to a folder with same name as the schema if database is postgresql' do |
323 | uses_postgresql | 325 | uses_postgresql |
324 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) | 326 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => @profile) |
325 | process_delayed_job_queue | 327 | process_delayed_job_queue |
326 | UploadedFile.attachment_options[:thumbnails].each do |suffix, size| | 328 | UploadedFile.attachment_options[:thumbnails].each do |suffix, size| |
327 | assert_match(/test_schema\/\d{4}\/\d{4}\/rails_#{suffix}.png/, UploadedFile.find(file.id).public_filename(suffix)) | 329 | assert_match(/test_schema\/\d{4}\/\d{4}\/rails_#{suffix}.png/, UploadedFile.find(file.id).public_filename(suffix)) |
@@ -331,13 +333,13 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -331,13 +333,13 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
331 | end | 333 | end |
332 | 334 | ||
333 | should 'not allow script files to be uploaded without append .txt in the end' do | 335 | should 'not allow script files to be uploaded without append .txt in the end' do |
334 | - file = UploadedFile.create!(:uploaded_data => fixture_file_upload('files/hello_world.php', 'application/x-php'), :profile => @profile) | 336 | + file = create(UploadedFile, :uploaded_data => fixture_file_upload('files/hello_world.php', 'application/x-php'), :profile => @profile) |
335 | assert_equal 'hello_world.php.txt', file.filename | 337 | assert_equal 'hello_world.php.txt', file.filename |
336 | end | 338 | end |
337 | 339 | ||
338 | should 'use gallery as target for action tracker' do | 340 | should 'use gallery as target for action tracker' do |
339 | gallery = fast_create(Gallery, :profile_id => profile.id) | 341 | gallery = fast_create(Gallery, :profile_id => profile.id) |
340 | - image = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile) | 342 | + image = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile) |
341 | activity = ActionTracker::Record.find_last_by_verb 'upload_image' | 343 | activity = ActionTracker::Record.find_last_by_verb 'upload_image' |
342 | assert_equal gallery, activity.target | 344 | assert_equal gallery, activity.target |
343 | end | 345 | end |
@@ -345,10 +347,10 @@ class UploadedFileTest < ActiveSupport::TestCase | @@ -345,10 +347,10 @@ class UploadedFileTest < ActiveSupport::TestCase | ||
345 | should 'group trackers activity of image\'s upload' do | 347 | should 'group trackers activity of image\'s upload' do |
346 | gallery = fast_create(Gallery, :profile_id => profile.id) | 348 | gallery = fast_create(Gallery, :profile_id => profile.id) |
347 | 349 | ||
348 | - image1 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile) | 350 | + image1 = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :parent => gallery, :profile => profile) |
349 | assert_equal 1, ActionTracker::Record.find_all_by_verb('upload_image').count | 351 | assert_equal 1, ActionTracker::Record.find_all_by_verb('upload_image').count |
350 | 352 | ||
351 | - image2 = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/other-pic.jpg', 'image/jpg'), :parent => gallery, :profile => profile) | 353 | + image2 = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/other-pic.jpg', 'image/jpg'), :parent => gallery, :profile => profile) |
352 | assert_equal 1, ActionTracker::Record.find_all_by_verb('upload_image').count | 354 | assert_equal 1, ActionTracker::Record.find_all_by_verb('upload_image').count |
353 | end | 355 | end |
354 | 356 |
@@ -0,0 +1,26 @@ | @@ -0,0 +1,26 @@ | ||
1 | +# Monkey patch to rewrite attachment_fu's logic where no image with parent can | ||
2 | +# be thumbnailable. | ||
3 | + | ||
4 | +Technoweenie::AttachmentFu.module_eval do | ||
5 | + def thumbnailable? | ||
6 | + image? && !is_thumbnail? | ||
7 | + end | ||
8 | + | ||
9 | + def is_thumbnail? | ||
10 | + (thumbnail_class == self.class) && !(respond_to?(:parent_id) && parent_id.nil?) | ||
11 | + end | ||
12 | +end | ||
13 | + | ||
14 | +# Monkey patch to rewrite attachment_fu's logic where no image with parent can | ||
15 | +# be thumbnailable and supposition that full_filename will return a String | ||
16 | +# while it might return Pathname. | ||
17 | +Technoweenie::AttachmentFu::Backends::FileSystemBackend.module_eval do | ||
18 | + def attachment_path_id | ||
19 | + (is_thumbnail? && respond_to?(:parent_id)) ? parent_id : id | ||
20 | + end | ||
21 | + | ||
22 | + def public_filename(thumbnail = nil) | ||
23 | + full_filename(thumbnail).to_s.gsub %r(^#{Regexp.escape(base_path)}), '' | ||
24 | + end | ||
25 | +end | ||
26 | + |