Support specification of content type in attaches_file()
This commit is contained in:
parent
3b72459298
commit
17f4dba965
@ -240,11 +240,19 @@ module Webrat
|
|||||||
|
|
||||||
class FileField < Field
|
class FileField < Field
|
||||||
|
|
||||||
|
attr_accessor :content_type
|
||||||
|
|
||||||
|
def set(value, content_type = nil)
|
||||||
|
super(value)
|
||||||
|
@content_type = content_type
|
||||||
|
end
|
||||||
|
|
||||||
def to_param
|
def to_param
|
||||||
if @value.nil?
|
if @value.nil?
|
||||||
super
|
super
|
||||||
else
|
else
|
||||||
replace_param_value(super, @value, ActionController::TestUploadedFile.new(@value))
|
file = content_type ? ActionController::TestUploadedFile.new(@value, content_type) : ActionController::TestUploadedFile.new(@value)
|
||||||
|
replace_param_value(super, @value, file)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,13 +91,14 @@ module Webrat
|
|||||||
|
|
||||||
# Verifies that an input file field exists on the current page and sets
|
# Verifies that an input file field exists on the current page and sets
|
||||||
# its value to the given +file+, so that the file will be uploaded
|
# its value to the given +file+, so that the file will be uploaded
|
||||||
# along with the form.
|
# along with the form. An optional <tt>content_type</tt> may be given.
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
# attaches_file "Photo", "/path/to/the/photo.jpg"
|
# attaches_file "Resume", "/path/to/the/resume.txt"
|
||||||
def attaches_file(id_or_name_or_label, path)
|
# attaches_file "Photo", "/path/to/the/image.png", "image/png"
|
||||||
|
def attaches_file(id_or_name_or_label, path, content_type = nil)
|
||||||
field = find_field(id_or_name_or_label, FileField)
|
field = find_field(id_or_name_or_label, FileField)
|
||||||
field.set(path)
|
field.set(path, content_type)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Saves the page out to RAILS_ROOT/tmp/ and opens it in the default
|
# Saves the page out to RAILS_ROOT/tmp/ and opens it in the default
|
||||||
|
@ -56,4 +56,17 @@ describe "attaches_file" do
|
|||||||
@session.attaches_file "Spreadsheet", @filename
|
@session.attaches_file "Spreadsheet", @filename
|
||||||
@session.clicks_button
|
@session.clicks_button
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should allow the content type to be specified" do
|
||||||
|
@session.response_body = <<-EOS
|
||||||
|
<form method="post" action="/widgets">
|
||||||
|
<label for="person_picture">Picture</label>
|
||||||
|
<input type="file" id="person_picture" name="person[picture]" />
|
||||||
|
<input type="submit" />
|
||||||
|
</form>
|
||||||
|
EOS
|
||||||
|
ActionController::TestUploadedFile.expects(:new).with(@filename, "image/png").returns(@uploaded_file)
|
||||||
|
@session.attaches_file "Picture", @filename, "image/png"
|
||||||
|
@session.clicks_button
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user