提交 12173396 编写于 作者: A Aaron Patterson

only forwarding enough methods to work. People should grab the delegate...

only forwarding enough methods to work. People should grab the delegate tempfile if they really need to do hard work
上级 3370ad0b
......@@ -13,13 +13,16 @@ def initialize(hash)
raise(ArgumentError, ':tempfile is required') unless @tempfile
end
def respond_to?(name)
super || @tempfile.respond_to?(name)
def read(*args)
@tempfile.read(*args)
end
def method_missing(name, *args, &block)
return super unless respond_to?(name)
@tempfile.send(name, *args, &block)
def rewind
@tempfile.rewind
end
def size
@tempfile.size
end
end
......
......@@ -29,36 +29,30 @@ def test_tempfile
end
def test_delegates_to_tempfile
tf = Class.new { def tenderlove; 'thunderhorse' end }
tf = Class.new { def read; 'thunderhorse' end }
uf = Http::UploadedFile.new(:tempfile => tf.new)
assert_equal 'thunderhorse', uf.tenderlove
assert_equal 'thunderhorse', uf.read
end
def test_delegates_to_tempfile_with_params
tf = Class.new { def tenderlove *args; args end }
tf = Class.new { def read *args; args end }
uf = Http::UploadedFile.new(:tempfile => tf.new)
assert_equal %w{ thunder horse }, uf.tenderlove(*%w{ thunder horse })
end
def test_delegates_to_tempfile_with_block
tf = Class.new { def tenderlove; yield end }
uf = Http::UploadedFile.new(:tempfile => tf.new)
assert_equal('thunderhorse', uf.tenderlove { 'thunderhorse' })
assert_equal %w{ thunder horse }, uf.read(*%w{ thunder horse })
end
def test_delegate_respects_respond_to?
tf = Class.new { def tenderlove; yield end; private :tenderlove }
tf = Class.new { def read; yield end; private :read }
uf = Http::UploadedFile.new(:tempfile => tf.new)
assert_raises(NoMethodError) do
uf.tenderlove
uf.read
end
end
def test_respond_to?
tf = Class.new { def tenderlove; yield end }
tf = Class.new { def read; 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'
assert uf.respond_to?(:read), 'responds to read'
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册