optgroups don't nest

This commit is contained in:
Thomas Walpole 2017-01-02 10:47:32 -08:00
parent 2ed9aad29f
commit 16a23ae000
4 changed files with 28 additions and 9 deletions

View File

@ -93,7 +93,7 @@ class Capybara::RackTest::Node < Capybara::Driver::Node
if %w(option optgroup).include? tag_name
string_node.disabled? || (find_xpath("parent::optgroup")[0] || find_xpath("parent::select")[0]).disabled?
else
!!(string_node.disabled? || ((fieldset = find_xpath("parent::fieldset")[0]) && fieldset.disabled?))
!!(string_node.disabled? || find_xpath("ancestor::fieldset[@disabled]")[0])
end
end

View File

@ -63,6 +63,7 @@ Capybara::SpecHelper.spec '#find_field' do
it "should find disabled fields when true" do
expect(@session.find_field("Disabled Checkbox", disabled: true)[:name]).to eq("form[disabled_checkbox]")
expect(@session.find_field("form_disabled_fieldset_child", disabled: true)[:name]).to eq("form[disabled_fieldset_child]")
expect(@session.find_field("form_disabled_fieldset_descendant", disabled: true)[:name]).to eq("form[disabled_fieldset_descendant]")
end
it "should not find disabled fields when false" do

View File

@ -181,6 +181,10 @@ Capybara::SpecHelper.spec "node" do
expect(@session.find('//input[@id="form_enabled_fieldset_child"]')).not_to be_disabled
end
it "should sees options in a disabled fieldset as disabled" do
@session.visit('/form')
expect(@session.find('//option', text: 'Disabled Child Option')).to be_disabled
end
it "should be boolean" do
@session.visit('/form')

View File

@ -344,14 +344,28 @@ New line after and before textarea tag
</p>
<p>
<fieldset disabled="disabled">
<input name="form[disabled_fieldset_child]" id="form_disabled_fieldset_child"/>
<fieldset>
<input name="form[enabled_fieldset_child]" id="form_enabled_fieldset_child"/>
</fieldset>
</p>
<p>
<fieldset>
<input name="form[enabled_fieldset_child]" id="form_enabled_fieldset_child"/>
<fieldset disabled="disabled">
<legend>Disabled Child</legend>
<input name="form[disabled_fieldset_child]" id="form_disabled_fieldset_child"/>
<select>
<option>Disabled Child Option</option>
</select>
</fieldset>
<fieldset disabled="disabled">
<legend>Nested Disabled</legend>
<p>
<fieldset>
<input name="form[disabled_fieldset_descendant]" id="form_disabled_fieldset_descendant"/>
</fieldset>
</p>
</fieldset>
</p>
@ -359,11 +373,11 @@ New line after and before textarea tag
<select>
<optgroup label="Level One">
<option> A.1 </option>
<optgroup label="Level Two" disabled="disabled">
<option> A.B.1 </option>
</optgroup>
<option> A.2 </option>
</optgroup>
<optgroup label="Level Two" disabled="disabled">
<option> A.B.1 </option>
</optgroup>
<option> A.2 </option>
</select>
</p>