Only turn values to arrays if requested with [] naming. Otherwise use the last provided value for the field.
This commit is contained in:
parent
b4cde1794e
commit
9d4940ee86
|
@ -108,13 +108,14 @@ class Capybara::Driver::RackTest
|
|||
|
||||
def merge_param!(params, key, value)
|
||||
collection = key.sub!(/\[\]$/, '')
|
||||
case params[key]
|
||||
when nil
|
||||
params[key] = collection ? [value] : value
|
||||
when Array
|
||||
params[key] << value
|
||||
if collection
|
||||
if params[key]
|
||||
params[key] << value
|
||||
else
|
||||
params[key] = [value]
|
||||
end
|
||||
else
|
||||
params[key] = [params[key], value]
|
||||
params[key] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -67,6 +67,14 @@ shared_examples_for "session" do
|
|||
@session.visit('/form')
|
||||
end
|
||||
|
||||
context "with multiple values with the same name" do
|
||||
it "should use the latest given value" do
|
||||
@session.check('Terms of Use')
|
||||
@session.click_button('awesome')
|
||||
extract_results(@session)['terms_of_use'].should == '1'
|
||||
end
|
||||
end
|
||||
|
||||
context "with value given on a submit button" do
|
||||
before do
|
||||
@session.click_button('awesome')
|
||||
|
|
|
@ -25,7 +25,13 @@
|
|||
<label for="form_password">Password</label>
|
||||
<input type="password" name="form[password]" value="seeekrit" id="form_password"/>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<label for="form_terms_of_use">Terms of Use</label>
|
||||
<input type="hidden" name="form[terms_of_use]" value="0" id="form_terms_of_use_default">
|
||||
<input type="checkbox" name="form[terms_of_use]" value="1" id="form_terms_of_use">
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="form_image">Image</label>
|
||||
<input type="file" name="form[image]" id="form_image"/>
|
||||
|
|
Loading…
Reference in New Issue