Allows passing options through has_checked_field? and has_unchecked_field? to has_selector?

This enables assertions on the presence of disabled checked fields by doing:

    assert has_checked_field?('Disabled Checkbox', :disabled => true)

in a similar way to:

    find_field("Disabled Checkbox", :disabled => true)
This commit is contained in:
Carol Nichols 2013-08-08 21:36:33 -04:00
parent 1273f519d5
commit c6687efbfe
4 changed files with 68 additions and 13 deletions

View File

@ -345,8 +345,8 @@ module Capybara
# @param [String] locator The label, name or id of a checked field
# @return [Boolean] Whether it exists
#
def has_checked_field?(locator)
has_selector?(:field, locator, :checked => true)
def has_checked_field?(locator, options={})
has_selector?(:field, locator, options.merge(:checked => true))
end
##
@ -358,8 +358,8 @@ module Capybara
# @param [String] locator The label, name or id of a checked field
# @return [Boolean] Whether it doesn't exist
#
def has_no_checked_field?(locator)
has_no_selector?(:field, locator, :checked => true)
def has_no_checked_field?(locator, options={})
has_no_selector?(:field, locator, options.merge(:checked => true))
end
##
@ -371,8 +371,8 @@ module Capybara
# @param [String] locator The label, name or id of an unchecked field
# @return [Boolean] Whether it exists
#
def has_unchecked_field?(locator)
has_selector?(:field, locator, :unchecked => true)
def has_unchecked_field?(locator, options={})
has_selector?(:field, locator, options.merge(:unchecked => true))
end
##
@ -384,8 +384,8 @@ module Capybara
# @param [String] locator The label, name or id of an unchecked field
# @return [Boolean] Whether it doesn't exist
#
def has_no_unchecked_field?(locator)
has_no_selector?(:field, locator, :unchecked => true)
def has_no_unchecked_field?(locator, options={})
has_no_selector?(:field, locator, options.merge(:unchecked => true))
end
##

View File

@ -134,12 +134,12 @@ module Capybara
HaveSelector.new(:field, locator, options)
end
def have_checked_field(locator)
HaveSelector.new(:field, locator, :checked => true)
def have_checked_field(locator, options={})
HaveSelector.new(:field, locator, options.merge(:checked => true))
end
def have_unchecked_field(locator)
HaveSelector.new(:field, locator, :unchecked => true)
def have_unchecked_field(locator, options={})
HaveSelector.new(:field, locator, options.merge(:unchecked => true))
end
def have_select(locator, options={})

View File

@ -121,6 +121,10 @@ Capybara::SpecHelper.spec '#has_checked_field?' do
@session.should have_checked_field('Hamster')
end
it "should be true for disabled checkboxes if :disabled => true" do
@session.should have_checked_field('Disabled Checkbox', :disabled => true)
end
it "should be false if an unchecked field is on the page" do
@session.should_not have_checked_field('form_pets_cat')
@session.should_not have_checked_field('Male')
@ -130,6 +134,14 @@ Capybara::SpecHelper.spec '#has_checked_field?' do
@session.should_not have_checked_field('Does Not Exist')
end
it "should be false for disabled checkboxes by default" do
@session.should_not have_checked_field('Disabled Checkbox')
end
it "should be false for disabled checkboxes if :disabled => false" do
@session.should_not have_checked_field('Disabled Checkbox', :disabled => false)
end
it "should be true after an unchecked checkbox is checked" do
@session.check('form_pets_cat')
@session.should have_checked_field('form_pets_cat')
@ -159,6 +171,10 @@ Capybara::SpecHelper.spec '#has_no_checked_field?' do
@session.should_not have_no_checked_field('Hamster')
end
it "should be false for disabled checkboxes if :disabled => true" do
@session.should_not have_no_checked_field('Disabled Checkbox', :disabled => true)
end
it "should be true if an unchecked field is on the page" do
@session.should have_no_checked_field('form_pets_cat')
@session.should have_no_checked_field('Male')
@ -167,6 +183,14 @@ Capybara::SpecHelper.spec '#has_no_checked_field?' do
it "should be true if no field is on the page" do
@session.should have_no_checked_field('Does Not Exist')
end
it "should be true for disabled checkboxes by default" do
@session.should have_no_checked_field('Disabled Checkbox')
end
it "should be true for disabled checkboxes if :disabled => false" do
@session.should have_no_checked_field('Disabled Checkbox', :disabled => false)
end
end
Capybara::SpecHelper.spec '#has_unchecked_field?' do
@ -182,10 +206,22 @@ Capybara::SpecHelper.spec '#has_unchecked_field?' do
@session.should have_unchecked_field('Male')
end
it "should be true for disabled unchecked fields if :disabled => true" do
@session.should have_unchecked_field('Disabled Unchecked Checkbox', :disabled => true)
end
it "should be false if no field is on the page" do
@session.should_not have_unchecked_field('Does Not Exist')
end
it "should be false for disabled unchecked fields by default" do
@session.should_not have_unchecked_field('Disabled Unchecked Checkbox')
end
it "should be false for disabled unchecked fields if :disabled => false" do
@session.should_not have_unchecked_field('Disabled Unchecked Checkbox', :disabled => false)
end
it "should be false after an unchecked checkbox is checked" do
@session.check('form_pets_cat')
@session.should_not have_unchecked_field('form_pets_cat')
@ -220,7 +256,19 @@ Capybara::SpecHelper.spec '#has_no_unchecked_field?' do
@session.should_not have_no_unchecked_field('Male')
end
it "should be false for disabled unchecked fields if :disabled => true" do
@session.should_not have_no_unchecked_field('Disabled Unchecked Checkbox', :disabled => true)
end
it "should be true if no field is on the page" do
@session.should have_no_unchecked_field('Does Not Exist')
end
it "should be true for disabled unchecked fields by default" do
@session.should have_no_unchecked_field('Disabled Unchecked Checkbox')
end
it "should be true for disabled unchecked fields if :disabled => false" do
@session.should have_no_unchecked_field('Disabled Unchecked Checkbox', :disabled => false)
end
end

View File

@ -135,7 +135,7 @@
<label for="form_description">Description</label></br>
<textarea name="form[description]" id="form_description">Descriptive text goes here</textarea>
<p>
<p>
<label for="form_newline">NewLine</label></br>
<textarea name="form[newline]" id="form_newline">
@ -242,6 +242,13 @@ New line after and before textarea tag
</label>
</p>
<p>
<label for="form_disabled_unchecked_checkbox">
Disabled Unchecked Checkbox
<input type="checkbox" name="form[disabled_unchecked_checkbox]" value="Should not see me" id="form_disabled_unchecked_checkbox" disabled="disabled" />
</label>
</p>
<p>
<label for="form_disabled_radio">
Disabled Radio