Expose select_option through Webrat::Methods. Minor refactorings

This commit is contained in:
Bryan Helmkamp 2008-11-30 20:33:44 -05:00
parent f5ed57e042
commit d576a72120
6 changed files with 9 additions and 20 deletions

View File

@ -365,11 +365,11 @@ module Webrat
def self.xpath_search
".//select"
end
def find_option(text)
options.detect { |o| o.matches_text?(text) }
end
def options
@options ||= SelectOption.load_all(@session, @element)
end
protected
def default_value
@ -382,9 +382,5 @@ module Webrat
end
end
def options
@options ||= SelectOption.load_all(@session, @element)
end
end
end

View File

@ -11,14 +11,6 @@ module Webrat
def self.xpath_search
".//form"
end
def find_select_option(option_text)
select_fields = fields_by_type([SelectField])
select_fields.detect_mapped do |select_field|
select_field.find_option(option_text)
end
end
def fields
@fields ||= Field.load_all(@session, @element)

View File

@ -17,7 +17,7 @@ module Webrat
if @id_or_name_or_label
field = FieldLocator.new(@session, @dom, @id_or_name_or_label, SelectField).locate!
field.send(:options).detect do |o|
field.options.detect do |o|
if @option_text.is_a?(Regexp)
Webrat::XML.inner_html(o.element) =~ @option_text
else
@ -51,7 +51,7 @@ module Webrat
end
def find_select_option(option_text, id_or_name_or_label) #:nodoc:
def select_option(option_text, id_or_name_or_label = nil) #:nodoc:
SelectOptionLocator.new(@session, dom, option_text, id_or_name_or_label).locate!
end

View File

@ -40,6 +40,7 @@ module Webrat
:reload, :reloads,
:clicks_link_within, :click_link_within,
:field_labeled,
:select_option,
:set_hidden_field, :submit_form,
:request_page, :current_dom,
:selects_date, :selects_time, :selects_datetime,

View File

@ -98,8 +98,7 @@ module Webrat
# select "February", :from => "event_month"
# select "February", :from => "Event Month"
def select(option_text, options = {})
option = find_select_option(option_text, options[:from])
option.choose
select_option(option_text, options[:from]).choose
end
webrat_deprecate :selects, :select

View File

@ -223,6 +223,7 @@ module Webrat
def_delegators :current_scope, :field_labeled
def_delegators :current_scope, :field_by_xpath
def_delegators :current_scope, :field_with_id
def_delegators :current_scope, :select_option
private