mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
making sure respond_to? works properly
This commit is contained in:
parent
8a97470210
commit
3370ad0b1e
2 changed files with 20 additions and 0 deletions
|
@ -13,7 +13,12 @@ module ActionDispatch
|
|||
raise(ArgumentError, ':tempfile is required') unless @tempfile
|
||||
end
|
||||
|
||||
def respond_to?(name)
|
||||
super || @tempfile.respond_to?(name)
|
||||
end
|
||||
|
||||
def method_missing(name, *args, &block)
|
||||
return super unless respond_to?(name)
|
||||
@tempfile.send(name, *args, &block)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -45,5 +45,20 @@ module ActionDispatch
|
|||
uf = Http::UploadedFile.new(:tempfile => tf.new)
|
||||
assert_equal('thunderhorse', uf.tenderlove { 'thunderhorse' })
|
||||
end
|
||||
|
||||
def test_delegate_respects_respond_to?
|
||||
tf = Class.new { def tenderlove; yield end; private :tenderlove }
|
||||
uf = Http::UploadedFile.new(:tempfile => tf.new)
|
||||
assert_raises(NoMethodError) do
|
||||
uf.tenderlove
|
||||
end
|
||||
end
|
||||
|
||||
def test_respond_to?
|
||||
tf = Class.new { def tenderlove; yield end }
|
||||
uf = Http::UploadedFile.new(:tempfile => tf.new)
|
||||
assert uf.respond_to?(:headers), 'responds to headers'
|
||||
assert uf.respond_to?(:tenderlove), 'responds to tenderlove'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue