mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Add support for fieldset disabled attribute to rack-test driver
This commit is contained in:
parent
f7e537006a
commit
53f304ad32
5 changed files with 41 additions and 3 deletions
|
@ -91,9 +91,9 @@ class Capybara::RackTest::Node < Capybara::Driver::Node
|
|||
|
||||
def disabled?
|
||||
if %w(option optgroup).include? tag_name
|
||||
string_node.disabled? || find_xpath("parent::*")[0].disabled?
|
||||
string_node.disabled? || (find_xpath("parent::optgroup")[0] || find_xpath("parent::select")[0]).disabled?
|
||||
else
|
||||
string_node.disabled?
|
||||
!!(string_node.disabled? || ((fieldset = find_xpath("parent::fieldset")[0]) && fieldset.disabled?))
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ Capybara::SpecHelper.spec "#fill_in" do
|
|||
expect(extract_results(@session)['password']).to eq('supasikrit')
|
||||
end
|
||||
|
||||
it "should fill in a field based on current value", twtw: true do
|
||||
it "should fill in a field based on current value" do
|
||||
@session.fill_in(currently_with: 'John', with: 'Thomas')
|
||||
@session.click_button('awesome')
|
||||
expect(extract_results(@session)['first_name']).to eq('Thomas')
|
||||
|
|
|
@ -62,6 +62,7 @@ Capybara::SpecHelper.spec '#find_field' do
|
|||
context "with :disabled option" 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]")
|
||||
end
|
||||
|
||||
it "should not find disabled fields when false" do
|
||||
|
|
|
@ -169,6 +169,19 @@ Capybara::SpecHelper.spec "node" do
|
|||
expect(@session.find('//select[@id="form_title"]/option[1]')).not_to be_disabled
|
||||
end
|
||||
|
||||
it "should see enabled options in disabled optgroup as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//option', text: "A.B.1")).to be_disabled
|
||||
expect(@session.find('//option', text: "A.2")).not_to be_disabled
|
||||
end
|
||||
|
||||
it "should see inputs in a disabled select as disabled" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//input[@id="form_disabled_fieldset_child"]')).to be_disabled
|
||||
expect(@session.find('//input[@id="form_enabled_fieldset_child"]')).not_to be_disabled
|
||||
end
|
||||
|
||||
|
||||
it "should be boolean" do
|
||||
@session.visit('/form')
|
||||
expect(@session.find('//select[@id="form_disabled_select"]/option').disabled?).to be true
|
||||
|
|
|
@ -343,6 +343,30 @@ New line after and before textarea tag
|
|||
</label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<fieldset disabled="disabled">
|
||||
<input name="form[disabled_fieldset_child]" id="form_disabled_fieldset_child"/>
|
||||
</fieldset>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<fieldset>
|
||||
<input name="form[enabled_fieldset_child]" id="form_enabled_fieldset_child"/>
|
||||
</fieldset>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<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>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input type="button" name="form[fresh]" id="fresh_btn" value="i am fresh"/>
|
||||
<input type="submit" name="form[awesome]" id="awe123" title="What an Awesome Button" value="awesome"/>
|
||||
|
|
Loading…
Add table
Reference in a new issue