SelectOption is a Webrat::Element too
This commit is contained in:
parent
c84e5335b5
commit
830b459482
@ -7,7 +7,7 @@ require "webrat/core/scope"
|
|||||||
require "webrat/core/elements/link"
|
require "webrat/core/elements/link"
|
||||||
require "webrat/core/elements/area"
|
require "webrat/core/elements/area"
|
||||||
require "webrat/core/elements/label"
|
require "webrat/core/elements/label"
|
||||||
require "webrat/core/select_option"
|
require "webrat/core/elements/select_option"
|
||||||
require "webrat/core/session"
|
require "webrat/core/session"
|
||||||
require "webrat/core/methods"
|
require "webrat/core/methods"
|
||||||
require "webrat/core/matchers"
|
require "webrat/core/matchers"
|
||||||
|
@ -369,7 +369,7 @@ module Webrat
|
|||||||
end
|
end
|
||||||
|
|
||||||
def options
|
def options
|
||||||
option_elements.map { |oe| SelectOption.new(self, oe) }
|
option_elements.map { |oe| SelectOption.new(@session, oe) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def option_elements
|
def option_elements
|
||||||
|
39
lib/webrat/core/elements/select_option.rb
Normal file
39
lib/webrat/core/elements/select_option.rb
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
require "webrat/core/elements/element"
|
||||||
|
|
||||||
|
module Webrat
|
||||||
|
class SelectOption < Element #:nodoc:
|
||||||
|
|
||||||
|
def matches_text?(text)
|
||||||
|
if text.is_a?(Regexp)
|
||||||
|
Webrat::XML.inner_html(@element) =~ text
|
||||||
|
else
|
||||||
|
Webrat::XML.inner_html(@element) == text.to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def choose
|
||||||
|
select.raise_error_if_disabled
|
||||||
|
select.set(value)
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def select
|
||||||
|
@session.element_to_webrat_element(select_element)
|
||||||
|
end
|
||||||
|
|
||||||
|
def select_element
|
||||||
|
parent = @element.parent
|
||||||
|
|
||||||
|
while parent.respond_to?(:parent)
|
||||||
|
return parent if parent.name == 'select'
|
||||||
|
parent = parent.parent
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def value
|
||||||
|
Webrat::XML.attribute(@element, "value") || Webrat::XML.inner_html(@element)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -1,29 +0,0 @@
|
|||||||
module Webrat
|
|
||||||
class SelectOption #:nodoc:
|
|
||||||
|
|
||||||
def initialize(select, element)
|
|
||||||
@select = select
|
|
||||||
@element = element
|
|
||||||
end
|
|
||||||
|
|
||||||
def matches_text?(text)
|
|
||||||
if text.is_a?(Regexp)
|
|
||||||
Webrat::XML.inner_html(@element) =~ text
|
|
||||||
else
|
|
||||||
Webrat::XML.inner_html(@element) == text.to_s
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def choose
|
|
||||||
@select.raise_error_if_disabled
|
|
||||||
@select.set(value)
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def value
|
|
||||||
Webrat::XML.attribute(@element, "value") || Webrat::XML.inner_html(@element)
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in New Issue
Block a user