Commit a9898a1cf84da1323101e3f8479c972d00eced67
1 parent
2638f65f
Exists in
master
and in
22 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 | + |