only forwarding enough methods to work. People should grab the delegate tempfile if they really need to do hard work
This commit is contained in:
parent
3370ad0b1e
commit
1217339616
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user