1
0
Fork 0
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:
Aaron Patterson 2010-10-04 17:11:50 -07:00
parent 8a97470210
commit 3370ad0b1e
2 changed files with 20 additions and 0 deletions

View file

@ -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

View file

@ -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