2013-02-05 14:16:51 -05:00
require 'spec_helper'
describe Upload do
it { should belong_to :user }
it { should belong_to :topic }
2013-04-07 17:52:46 +02:00
2013-06-13 01:43:50 +02:00
it { should have_and_belong_to_many :post }
2013-02-05 14:16:51 -05:00
it { should validate_presence_of :original_filename }
it { should validate_presence_of :filesize }
2013-04-07 17:52:46 +02:00
context '.create_for' do
let ( :user_id ) { 1 }
let ( :topic_id ) { 42 }
let ( :logo ) do
ActionDispatch :: Http :: UploadedFile . new ( {
filename : 'logo.png' ,
content_type : 'image/png' ,
tempfile : File . new ( " #{ Rails . root } /spec/fixtures/images/logo.png " )
} )
end
2013-06-05 00:34:53 +02:00
let ( :upload ) { Upload . create_for ( user_id , logo , topic_id ) }
2013-04-07 17:52:46 +02:00
2013-06-05 00:34:53 +02:00
let ( :url ) { " http://domain.com " }
2013-04-07 17:52:46 +02:00
2013-05-31 03:13:37 +02:00
shared_examples_for " upload " do
it " is valid " do
2013-06-05 00:34:53 +02:00
upload . user_id . should == user_id
upload . topic_id . should == topic_id
2013-05-31 03:13:37 +02:00
upload . original_filename . should == logo . original_filename
2013-06-05 00:34:53 +02:00
upload . filesize . should == File . size ( logo . tempfile )
2013-05-31 03:13:37 +02:00
upload . width . should == 244
upload . height . should == 66
2013-06-05 00:34:53 +02:00
upload . url . should == url
2013-05-31 03:13:37 +02:00
end
end
2013-06-05 00:34:53 +02:00
context " s3 " do
2013-06-13 01:43:50 +02:00
before ( :each ) do
2013-06-05 00:34:53 +02:00
SiteSetting . stubs ( :enable_s3_uploads? ) . returns ( true )
S3 . stubs ( :store_file ) . returns ( url )
2013-05-31 03:13:37 +02:00
end
it_behaves_like " upload "
2013-04-07 17:52:46 +02:00
end
2013-06-05 00:34:53 +02:00
context " locally " do
before ( :each ) { LocalStore . stubs ( :store_file ) . returns ( url ) }
2013-05-31 03:13:37 +02:00
it_behaves_like " upload "
2013-04-07 17:52:46 +02:00
end
end
2013-02-05 14:16:51 -05:00
end