61 lines
1.6 KiB
Ruby
61 lines
1.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe OptimizedImage do
|
|
|
|
it { should belong_to :upload }
|
|
|
|
let(:upload) { Fabricate(:upload) }
|
|
let(:oi) { OptimizedImage.create_for(upload, 100, 200) }
|
|
|
|
describe ".create_for" do
|
|
|
|
before { ImageSorcery.any_instance.expects(:convert).returns(true) }
|
|
|
|
describe "internal store" do
|
|
|
|
it "works" do
|
|
Tempfile.any_instance.expects(:close!)
|
|
oi.sha1.should == "da39a3ee5e6b4b0d3255bfef95601890afd80709"
|
|
oi.extension.should == ".jpg"
|
|
oi.width.should == 100
|
|
oi.height.should == 200
|
|
oi.url.should == "/uploads/default/_optimized/da3/9a3/ee5e6b4b0d_100x200.jpg"
|
|
end
|
|
|
|
end
|
|
|
|
describe "external store" do
|
|
|
|
require 'file_store/s3_store'
|
|
require 'fog'
|
|
|
|
let(:store) { S3Store.new }
|
|
|
|
before do
|
|
Discourse.stubs(:store).returns(store)
|
|
SiteSetting.stubs(:s3_upload_bucket).returns("S3_Upload_Bucket")
|
|
SiteSetting.stubs(:s3_access_key_id).returns("s3_access_key_id")
|
|
SiteSetting.stubs(:s3_secret_access_key).returns("s3_secret_access_key")
|
|
Fog.mock!
|
|
end
|
|
|
|
it "works" do
|
|
# fake downloaded file
|
|
downloaded_file = {}
|
|
downloaded_file.expects(:path).returns("/path/to/fake.png")
|
|
downloaded_file.expects(:close!)
|
|
store.expects(:download).returns(downloaded_file)
|
|
# assertions
|
|
oi.sha1.should == "da39a3ee5e6b4b0d3255bfef95601890afd80709"
|
|
oi.extension.should == ".png"
|
|
oi.width.should == 100
|
|
oi.height.should == 200
|
|
oi.url.should =~ /^\/\/s3_upload_bucket.s3.amazonaws.com\/[0-9a-f]+_100x200.png/
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|