Commit 5f8140d1 by Luke Griffiths

passing AttachmentOptions instance instead of hash to Attachment.new

parent ac4408ac
...@@ -37,6 +37,7 @@ require 'paperclip/thumbnail' ...@@ -37,6 +37,7 @@ require 'paperclip/thumbnail'
require 'paperclip/interpolations' require 'paperclip/interpolations'
require 'paperclip/style' require 'paperclip/style'
require 'paperclip/attachment' require 'paperclip/attachment'
require 'paperclip/attachment_options'
require 'paperclip/storage' require 'paperclip/storage'
require 'paperclip/callback_compatibility' require 'paperclip/callback_compatibility'
require 'paperclip/missing_attachment_styles' require 'paperclip/missing_attachment_styles'
...@@ -325,7 +326,7 @@ module Paperclip ...@@ -325,7 +326,7 @@ module Paperclip
self.attachment_definitions = self.attachment_definitions.dup self.attachment_definitions = self.attachment_definitions.dup
end end
attachment_definitions[name] = {:validations => []}.merge(options) attachment_definitions[name] = Paperclip::AttachmentOptions.new(options)
Paperclip.classes_with_attachments << self.name Paperclip.classes_with_attachments << self.name
Paperclip.check_for_url_clash(name,attachment_definitions[name][:url],self.name) Paperclip.check_for_url_clash(name,attachment_definitions[name][:url],self.name)
......
module Paperclip
class AttachmentOptions
def initialize(options)
@options = {:validations => []}.merge(options)
end
def [](key)
@options[key]
end
def []=(key, value)
@options[key] = value
end
def to_hash
@options
end
end
end
require './test/helper'
class AttachmentOptionsTest < Test::Unit::TestCase
should "exist" do
Paperclip::AttachmentOptions
end
should "add a default empty validations" do
options = {:arbi => :trary}
expected = {:validations => []}.merge(options)
actual = Paperclip::AttachmentOptions.new(options).to_hash
assert_equal expected, actual
end
should "respond to []" do
Paperclip::AttachmentOptions.new({})[:foo]
end
should "deliver the specified options through []" do
intended_options = {:specific_key => "specific value"}
attachment_options = Paperclip::AttachmentOptions.new(intended_options)
assert_equal "specific value", attachment_options[:specific_key]
end
should "respond to []=" do
Paperclip::AttachmentOptions.new({})[:foo] = "bar"
end
should "remember options set with []=" do
attachment_options = Paperclip::AttachmentOptions.new({})
attachment_options[:foo] = "bar"
assert_equal "bar", attachment_options[:foo]
end
end
...@@ -54,10 +54,15 @@ ActiveRecord::Base.logger = ActiveSupport::BufferedLogger.new(File.dirname(__FIL ...@@ -54,10 +54,15 @@ ActiveRecord::Base.logger = ActiveSupport::BufferedLogger.new(File.dirname(__FIL
ActiveRecord::Base.establish_connection(config['test']) ActiveRecord::Base.establish_connection(config['test'])
Paperclip.options[:logger] = ActiveRecord::Base.logger Paperclip.options[:logger] = ActiveRecord::Base.logger
Dir[File.join(File.dirname(__FILE__), 'support','*')].each do |f| def require_everything_in_directory(directory_name)
require f Dir[File.join(File.dirname(__FILE__), directory_name, '*')].each do |f|
require f
end
end end
require_everything_in_directory('support')
require_everything_in_directory('mocks')
def reset_class class_name def reset_class class_name
ActiveRecord::Base.send(:include, Paperclip::Glue) ActiveRecord::Base.send(:include, Paperclip::Glue)
Object.send(:remove_const, class_name) rescue nil Object.send(:remove_const, class_name) rescue nil
......
class MockAttachmentOptions
def [](key)
nil
end
end
...@@ -98,6 +98,13 @@ class PaperclipTest < Test::Unit::TestCase ...@@ -98,6 +98,13 @@ class PaperclipTest < Test::Unit::TestCase
end end
end end
context "An ActiveRecord model responding to has_attached_file" do
should "pass the options to Paperclip::AttachmentOptions.new" do
Paperclip::AttachmentOptions.expects(:new).with({"test" => "hash"}).returns(MockAttachmentOptions.new)
rebuild_model "test" => "hash"
end
end
context "An ActiveRecord model with an 'avatar' attachment" do context "An ActiveRecord model with an 'avatar' attachment" do
setup do setup do
rebuild_model :path => "tmp/:class/omg/:style.:extension" rebuild_model :path => "tmp/:class/omg/:style.:extension"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment