From 522bb3272f0f307e0694a016c6d36675def8a945 Mon Sep 17 00:00:00 2001 From: Bryan Helmkamp Date: Sun, 30 Nov 2008 15:47:31 -0500 Subject: [PATCH] Initialize locators with a session and a dom instead of a scope --- lib/webrat/core/locators/area_locator.rb | 8 ++++---- lib/webrat/core/locators/button_locator.rb | 6 +++--- lib/webrat/core/locators/field_by_id_locator.rb | 6 +++--- lib/webrat/core/locators/field_labeled_locator.rb | 6 +++--- lib/webrat/core/locators/field_locator.rb | 8 ++++---- lib/webrat/core/locators/field_named_locator.rb | 6 +++--- lib/webrat/core/locators/form_locator.rb | 4 ++-- lib/webrat/core/locators/label_locator.rb | 4 ++-- lib/webrat/core/locators/link_locator.rb | 6 +++--- lib/webrat/core/locators/locator.rb | 7 ++++--- lib/webrat/core/locators/select_option_locator.rb | 13 +++++++------ lib/webrat/core/scope.rb | 10 +++++----- 12 files changed, 43 insertions(+), 41 deletions(-) diff --git a/lib/webrat/core/locators/area_locator.rb b/lib/webrat/core/locators/area_locator.rb index 5288bf4..9497939 100644 --- a/lib/webrat/core/locators/area_locator.rb +++ b/lib/webrat/core/locators/area_locator.rb @@ -4,9 +4,9 @@ module Webrat module Locators class AreaLocator < Locator - + def locate - Area.load(@scope.session, area_element) + Area.load(@session, area_element) end def area_element @@ -21,7 +21,7 @@ module Webrat end def area_elements - Webrat::XML.xpath_search(@scope.dom, Area.xpath_search) + Webrat::XML.xpath_search(@dom, Area.xpath_search) end def error_message @@ -31,7 +31,7 @@ module Webrat end def find_area(id_or_title) #:nodoc: - AreaLocator.new(self, id_or_title).locate! + AreaLocator.new(@session, dom, id_or_title).locate! end end diff --git a/lib/webrat/core/locators/button_locator.rb b/lib/webrat/core/locators/button_locator.rb index 8082326..d2eaf1e 100644 --- a/lib/webrat/core/locators/button_locator.rb +++ b/lib/webrat/core/locators/button_locator.rb @@ -6,7 +6,7 @@ module Webrat class ButtonLocator < Locator def locate - ButtonField.load(@scope.session, button_element) + ButtonField.load(@session, button_element) end def button_element @@ -37,7 +37,7 @@ module Webrat end def button_elements - Webrat::XML.xpath_search(@scope.dom, *ButtonField.xpath_search) + Webrat::XML.xpath_search(@dom, *ButtonField.xpath_search) end def error_message @@ -47,7 +47,7 @@ module Webrat end def find_button(value) #:nodoc: - ButtonLocator.new(self, value).locate! + ButtonLocator.new(@session, dom, value).locate! end end diff --git a/lib/webrat/core/locators/field_by_id_locator.rb b/lib/webrat/core/locators/field_by_id_locator.rb index 01f269e..0a19620 100644 --- a/lib/webrat/core/locators/field_by_id_locator.rb +++ b/lib/webrat/core/locators/field_by_id_locator.rb @@ -6,7 +6,7 @@ module Webrat class FieldByIdLocator < Locator def locate - Field.load(@scope.session, field_element) + Field.load(@session, field_element) end def field_element @@ -20,7 +20,7 @@ module Webrat end def field_elements - Webrat::XML.xpath_search(@scope.dom, *Field.xpath_search) + Webrat::XML.xpath_search(@dom, *Field.xpath_search) end def error_message @@ -30,7 +30,7 @@ module Webrat end def field_with_id(id, *field_types) - FieldByIdLocator.new(self, id, *field_types).locate! + FieldByIdLocator.new(@session, dom, id, *field_types).locate! end end diff --git a/lib/webrat/core/locators/field_labeled_locator.rb b/lib/webrat/core/locators/field_labeled_locator.rb index 76846cc..1e51d54 100644 --- a/lib/webrat/core/locators/field_labeled_locator.rb +++ b/lib/webrat/core/locators/field_labeled_locator.rb @@ -14,7 +14,7 @@ module Webrat matching_label_elements.sort_by do |label_element| text(label_element).length end.map do |label_element| - Label.load(@scope.session, label_element) + Label.load(@session, label_element) end end @@ -25,7 +25,7 @@ module Webrat end def label_elements - Webrat::XML.xpath_search(@scope.dom, Label.xpath_search) + Webrat::XML.xpath_search(@dom, Label.xpath_search) end def error_message @@ -43,7 +43,7 @@ module Webrat end def field_labeled(label, *field_types) - FieldLabeledLocator.new(self, label, *field_types).locate! + FieldLabeledLocator.new(@session, dom, label, *field_types).locate! end end diff --git a/lib/webrat/core/locators/field_locator.rb b/lib/webrat/core/locators/field_locator.rb index 651de61..63156a4 100644 --- a/lib/webrat/core/locators/field_locator.rb +++ b/lib/webrat/core/locators/field_locator.rb @@ -6,9 +6,9 @@ module Webrat class FieldLocator < Locator def locate - FieldByIdLocator.new(@scope, @value).locate || - FieldNamedLocator.new(@scope, @value, *@field_types).locate || - FieldLabeledLocator.new(@scope, @value, *@field_types).locate + FieldByIdLocator.new(@session, @dom, @value).locate || + FieldNamedLocator.new(@session, @dom, @value, *@field_types).locate || + FieldLabeledLocator.new(@session, @dom, @value, *@field_types).locate end def error_message @@ -18,7 +18,7 @@ module Webrat end def field(*args) # :nodoc: - FieldLocator.new(self, *args).locate! + FieldLocator.new(@session, dom, *args).locate! end end diff --git a/lib/webrat/core/locators/field_named_locator.rb b/lib/webrat/core/locators/field_named_locator.rb index 7460bb8..641682a 100644 --- a/lib/webrat/core/locators/field_named_locator.rb +++ b/lib/webrat/core/locators/field_named_locator.rb @@ -6,7 +6,7 @@ module Webrat class FieldNamedLocator < Locator def locate - Field.load(@scope.session, field_element) + Field.load(@session, field_element) end def field_element @@ -16,7 +16,7 @@ module Webrat end def field_elements - Webrat::XML.xpath_search(@scope.dom, *xpath_searches) + Webrat::XML.xpath_search(@dom, *xpath_searches) end def xpath_searches @@ -34,7 +34,7 @@ module Webrat end def field_named(name, *field_types) - FieldNamedLocator.new(self, name, *field_types).locate! + FieldNamedLocator.new(@session, dom, name, *field_types).locate! end end diff --git a/lib/webrat/core/locators/form_locator.rb b/lib/webrat/core/locators/form_locator.rb index 278c72a..154979d 100644 --- a/lib/webrat/core/locators/form_locator.rb +++ b/lib/webrat/core/locators/form_locator.rb @@ -6,11 +6,11 @@ module Webrat class FormLocator < Locator def locate - Form.load(@scope.session, form_element) + Form.load(@session, form_element) end def form_element - Webrat::XML.css_at(@scope.dom, "#" + @value) + Webrat::XML.css_at(@dom, "#" + @value) end end diff --git a/lib/webrat/core/locators/label_locator.rb b/lib/webrat/core/locators/label_locator.rb index bb89518..72d55d3 100644 --- a/lib/webrat/core/locators/label_locator.rb +++ b/lib/webrat/core/locators/label_locator.rb @@ -7,7 +7,7 @@ module Webrat class LabelLocator < Locator def locate - Label.load(@scope.session, label_element) + Label.load(@session, label_element) end def label_element @@ -17,7 +17,7 @@ module Webrat end def label_elements - Webrat::XML.xpath_search(@scope.dom, Label.xpath_search) + Webrat::XML.xpath_search(@dom, Label.xpath_search) end def text(label_element) diff --git a/lib/webrat/core/locators/link_locator.rb b/lib/webrat/core/locators/link_locator.rb index b7e5b1f..9993b11 100644 --- a/lib/webrat/core/locators/link_locator.rb +++ b/lib/webrat/core/locators/link_locator.rb @@ -6,7 +6,7 @@ module Webrat class LinkLocator < Locator def locate - Link.load(@scope.session, link_element) + Link.load(@session, link_element) end def link_element @@ -41,7 +41,7 @@ module Webrat end def link_elements - Webrat::XML.css_search(@scope.dom, *Link.css_search) + Webrat::XML.css_search(@dom, *Link.css_search) end def replace_nbsp(str) @@ -59,7 +59,7 @@ module Webrat end def find_link(text_or_title_or_id) #:nodoc: - LinkLocator.new(self, text_or_title_or_id).locate! + LinkLocator.new(@session, dom, text_or_title_or_id).locate! end end diff --git a/lib/webrat/core/locators/locator.rb b/lib/webrat/core/locators/locator.rb index a91a750..46822be 100644 --- a/lib/webrat/core/locators/locator.rb +++ b/lib/webrat/core/locators/locator.rb @@ -2,9 +2,10 @@ module Webrat module Locators class Locator - - def initialize(scope, value, *field_types) - @scope = scope + + def initialize(session, dom, value, *field_types) + @session = session + @dom = dom @value = value @field_types = field_types end diff --git a/lib/webrat/core/locators/select_option_locator.rb b/lib/webrat/core/locators/select_option_locator.rb index e0bc6f4..ae86ef9 100644 --- a/lib/webrat/core/locators/select_option_locator.rb +++ b/lib/webrat/core/locators/select_option_locator.rb @@ -6,15 +6,16 @@ module Webrat class SelectOptionLocator < Locator - def initialize(scope, option_text, id_or_name_or_label) - @scope = scope + def initialize(session, dom, option_text, id_or_name_or_label) + @session = session + @dom = dom @option_text = option_text @id_or_name_or_label = id_or_name_or_label end def locate if @id_or_name_or_label - field = FieldLocator.new(@scope, @id_or_name_or_label, SelectField).locate! + field = FieldLocator.new(@session, @dom, @id_or_name_or_label, SelectField).locate! field.send(:options).detect do |o| if @option_text.is_a?(Regexp) @@ -32,12 +33,12 @@ module Webrat end end - SelectOption.load(@scope.session, option_element) + SelectOption.load(@session, option_element) end end def option_elements - Webrat::XML.xpath_search(@scope.dom, *SelectOption.xpath_search) + Webrat::XML.xpath_search(@dom, *SelectOption.xpath_search) end def error_message @@ -51,7 +52,7 @@ module Webrat end def find_select_option(option_text, id_or_name_or_label) #:nodoc: - SelectOptionLocator.new(self, option_text, id_or_name_or_label).locate! + SelectOptionLocator.new(@session, dom, option_text, id_or_name_or_label).locate! end end diff --git a/lib/webrat/core/scope.rb b/lib/webrat/core/scope.rb index effe934..ea3ac0f 100644 --- a/lib/webrat/core/scope.rb +++ b/lib/webrat/core/scope.rb @@ -132,7 +132,7 @@ module Webrat date_to_select : Date.parse(date_to_select) id_prefix = locate_id_prefix(options) do - year_field = FieldByIdLocator.new(self, /(.*?)_#{DATE_TIME_SUFFIXES[:year]}$/).locate + year_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:year]}$/).locate raise NotFoundError.new("No date fields were found") unless year_field && year_field.id =~ /(.*?)_1i/ $1 end @@ -166,7 +166,7 @@ module Webrat time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select) id_prefix = locate_id_prefix(options) do - hour_field = FieldByIdLocator.new(self, /(.*?)_#{DATE_TIME_SUFFIXES[:hour]}$/).locate + hour_field = FieldByIdLocator.new(@session, dom, /(.*?)_#{DATE_TIME_SUFFIXES[:hour]}$/).locate raise NotFoundError.new("No time fields were found") unless hour_field && hour_field.id =~ /(.*?)_4i/ $1 end @@ -188,7 +188,7 @@ module Webrat def select_datetime(time_to_select, options ={}) time = time_to_select.is_a?(Time) ? time_to_select : Time.parse(time_to_select) - options[:id_prefix] ||= (options[:from] ? FieldByIdLocator.new(self, options[:from]).locate : nil) + options[:id_prefix] ||= (options[:from] ? FieldByIdLocator.new(@session, dom, options[:from]).locate : nil) select_date time, options select_time time, options @@ -261,7 +261,7 @@ module Webrat webrat_deprecate :clicks_button, :click_button def submit_form(id) - FormLocator.new(self, id).locate.submit + FormLocator.new(@session, dom, id).locate.submit end def dom # :nodoc: @@ -301,7 +301,7 @@ module Webrat return options[:id_prefix] if options[:id_prefix] if options[:from] - if (label = LabelLocator.new(self, options[:from]).locate) + if (label = LabelLocator.new(@session, dom, options[:from]).locate) label.for_id else raise NotFoundError.new("Could not find the label with text #{options[:from]}")