Implement file uploading for :rack
This commit is contained in:
parent
f2882ef8b2
commit
3760867d0f
@ -366,6 +366,8 @@ module Webrat
|
|||||||
when :merb
|
when :merb
|
||||||
# TODO: support content_type
|
# TODO: support content_type
|
||||||
File.new(@value)
|
File.new(@value)
|
||||||
|
when :rack
|
||||||
|
Rack::Test::UploadedFile.new(@value, content_type)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -33,6 +33,14 @@ class RackApp < Sinatra::Base
|
|||||||
@email = params[:email]
|
@email = params[:email]
|
||||||
erb :hello
|
erb :hello
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get "/upload" do
|
||||||
|
erb :uploader
|
||||||
|
end
|
||||||
|
|
||||||
|
post "/upload" do
|
||||||
|
params[:uploaded_file].to_yaml
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
@ -71,3 +79,11 @@ __END__
|
|||||||
@@ hello
|
@@ hello
|
||||||
<p>Hello, <%= @user %></p>
|
<p>Hello, <%= @user %></p>
|
||||||
<p>Your email is: <%= @email %></p>
|
<p>Your email is: <%= @email %></p>
|
||||||
|
|
||||||
|
@@ uploader
|
||||||
|
<form action="/upload" method="post">
|
||||||
|
<label>
|
||||||
|
File <input type="file" name="uploaded_file" />
|
||||||
|
</label>
|
||||||
|
<input type="submit" value="Upload">
|
||||||
|
</form>
|
||||||
|
@ -42,6 +42,17 @@ class WebratRackTest < Test::Unit::TestCase
|
|||||||
visit "/absolute_redirect"
|
visit "/absolute_redirect"
|
||||||
assert_contain "spam"
|
assert_contain "spam"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_upload_file
|
||||||
|
visit "/upload"
|
||||||
|
attach_file "File", __FILE__, "text/ruby"
|
||||||
|
click_button "Upload"
|
||||||
|
|
||||||
|
upload = YAML.load(response_body)
|
||||||
|
assert_equal "text/ruby", upload[:type]
|
||||||
|
assert_equal "webrat_rack_test.rb", upload[:filename]
|
||||||
|
assert upload[:tempfile].respond_to?(:read)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class WebratRackSetupTest < Test::Unit::TestCase
|
class WebratRackSetupTest < Test::Unit::TestCase
|
||||||
|
Loading…
Reference in New Issue
Block a user