131 lines
3.8 KiB
Ruby
131 lines
3.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
|
|
describe CarrierWave do
|
|
before do
|
|
@uploader_class = Class.new(CarrierWave::Uploader::Base)
|
|
end
|
|
|
|
describe '.configure' do
|
|
it "should proxy to Uploader configuration" do
|
|
CarrierWave::Uploader::Base.add_config :test_config
|
|
CarrierWave.configure do |config|
|
|
config.test_config = "foo"
|
|
end
|
|
expect(CarrierWave::Uploader::Base.test_config).to eq('foo')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe CarrierWave::Uploader::Base do
|
|
before do
|
|
@uploader_class = Class.new(CarrierWave::Uploader::Base)
|
|
end
|
|
|
|
describe '.configure' do
|
|
it "should set a configuration parameter" do
|
|
@uploader_class.add_config :foo_bar
|
|
@uploader_class.configure do |config|
|
|
config.foo_bar = "monkey"
|
|
end
|
|
expect(@uploader_class.foo_bar).to eq('monkey')
|
|
end
|
|
end
|
|
|
|
describe ".storage" do
|
|
it "should set the storage if an argument is given" do
|
|
storage = double('some kind of storage')
|
|
@uploader_class.storage storage
|
|
expect(@uploader_class.storage).to eq(storage)
|
|
end
|
|
|
|
it "should default to file" do
|
|
expect(@uploader_class.storage).to eq(CarrierWave::Storage::File)
|
|
end
|
|
|
|
it "should set the storage from the configured shortcuts if a symbol is given" do
|
|
@uploader_class.storage :file
|
|
expect(@uploader_class.storage).to eq(CarrierWave::Storage::File)
|
|
end
|
|
|
|
it "should remember the storage when inherited" do
|
|
@uploader_class.storage :fog
|
|
subclass = Class.new(@uploader_class)
|
|
expect(subclass.storage).to eq(CarrierWave::Storage::Fog)
|
|
end
|
|
|
|
it "should be changeable when inherited" do
|
|
@uploader_class.storage :fog
|
|
subclass = Class.new(@uploader_class)
|
|
expect(subclass.storage).to eq(CarrierWave::Storage::Fog)
|
|
subclass.storage :file
|
|
expect(subclass.storage).to eq(CarrierWave::Storage::File)
|
|
end
|
|
|
|
it "should raise UnknownStorageError when set unknown storage" do
|
|
expect{ @uploader_class.storage :unknown }.to raise_error(CarrierWave::UnknownStorageError, "Unknown storage: unknown")
|
|
end
|
|
end
|
|
|
|
|
|
describe '.add_config' do
|
|
it "should add a class level accessor" do
|
|
@uploader_class.add_config :foo_bar
|
|
@uploader_class.foo_bar = 'foo'
|
|
expect(@uploader_class.foo_bar).to eq('foo')
|
|
end
|
|
|
|
['foo', :foo, 45, ['foo', :bar]].each do |val|
|
|
it "should be inheritable for a #{val.class}" do
|
|
@uploader_class.add_config :foo_bar
|
|
@child_class = Class.new(@uploader_class)
|
|
|
|
@uploader_class.foo_bar = val
|
|
expect(@uploader_class.foo_bar).to eq(val)
|
|
expect(@child_class.foo_bar).to eq(val)
|
|
|
|
@child_class.foo_bar = "bar"
|
|
expect(@child_class.foo_bar).to eq("bar")
|
|
|
|
expect(@uploader_class.foo_bar).to eq(val)
|
|
end
|
|
end
|
|
|
|
|
|
it "should add an instance level accessor" do
|
|
@uploader_class.add_config :foo_bar
|
|
@uploader_class.foo_bar = 'foo'
|
|
expect(@uploader_class.new.foo_bar).to eq('foo')
|
|
end
|
|
|
|
it "should add a convenient in-class setter" do
|
|
@uploader_class.add_config :foo_bar
|
|
@uploader_class.foo_bar "monkey"
|
|
expect(@uploader_class.foo_bar).to eq("monkey")
|
|
end
|
|
|
|
describe "assigning a proc to a config attribute" do
|
|
before(:each) do
|
|
@uploader_class.add_config :hoobatz
|
|
@uploader_class.hoobatz = this_proc
|
|
end
|
|
|
|
context "when the proc accepts no arguments" do
|
|
let(:this_proc) { proc { "a return value" } }
|
|
|
|
it "calls the proc without arguments" do
|
|
expect(@uploader_class.new.hoobatz).to eq("a return value")
|
|
end
|
|
end
|
|
|
|
context "when the proc accepts one argument" do
|
|
let(:this_proc) { proc { |arg1| expect(arg1).to be_an_instance_of(@uploader_class) } }
|
|
|
|
it "calls the proc with an instance of the uploader" do
|
|
@uploader_class.new.hoobatz
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|