Skip to content

Commit

Permalink
Refactoring away from Page object
Browse files Browse the repository at this point in the history
  • Loading branch information
brynary committed Aug 10, 2008
1 parent 9fd8a9e commit 1d39fe7
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 52 deletions.
8 changes: 4 additions & 4 deletions lib/webrat/core/form.rb
Expand Up @@ -2,8 +2,8 @@ module Webrat
class Form
attr_reader :element

def initialize(page, element)
@page = page
def initialize(session, element)
@session = session
@element = element
@fields = nil
end
Expand Down Expand Up @@ -53,7 +53,7 @@ def fields
end

def submit
@page.session.request_page(form_action, form_method, params)
@session.request_page(form_action, form_method, params)
end

protected
Expand Down Expand Up @@ -104,7 +104,7 @@ def form_method
end

def form_action
@element["action"].blank? ? @page.url : @element["action"]
@element["action"].blank? ? @session.current_url : @element["action"]
end

def merge(all_params, new_param)
Expand Down
12 changes: 6 additions & 6 deletions lib/webrat/core/link.rb
@@ -1,8 +1,8 @@
module Webrat
class Link

def initialize(page, element)
@page = page
def initialize(session, element)
@session = session
@element = element
end

Expand All @@ -13,9 +13,9 @@ def click(method = nil, options = {})
options[:javascript] = true if options[:javascript].nil?

if options[:javascript]
@page.session.request_page(absolute_href, method, data)
@session.request_page(absolute_href, method, data)
else
@page.session.request_page(absolute_href, :get, {})
@session.request_page(absolute_href, :get, {})
end
end

Expand Down Expand Up @@ -47,9 +47,9 @@ def absolute_href
if href =~ %r{^https?://www.example.com(/.*)}
$LAST_MATCH_INFO.captures.first
elsif href =~ /^\?/
"#{@page.url}#{href}"
"#{@session.current_url}#{href}"
elsif href !~ /^\//
"#{@page.url}/#{href}"
"#{@session.current_url}/#{href}"
else
href
end
Expand Down
39 changes: 10 additions & 29 deletions lib/webrat/core/page.rb
Expand Up @@ -9,42 +9,23 @@ class Page
include Logging
include Flunk

attr_reader :session
attr_reader :url
attr_reader :data
attr_reader :http_method

def initialize(session, url = nil, method = :get, data = {})
@session = session
@url = url
@method = method
@data = data

reset_scope
load_page if @url
@session = session
@url = url
@http_method = method
@data = data

session.current_page = self
end

def http_method
@method
end

def data
@data
session.request_page(@url, @http_method, @data) if @url

@scope = nil
end

def scope
@scope ||= Scope.new(self, session.response_body)
end

protected

def load_page
session.request_page(@url, @method, @data)
reset_scope
end

def reset_scope
@scope = nil
@scope ||= Scope.new(@session, @session.response_body)
end

end
Expand Down
10 changes: 5 additions & 5 deletions lib/webrat/core/scope.rb
Expand Up @@ -3,9 +3,9 @@ class Scope
include Logging
include Flunk

def initialize(page, html, selector = nil)
@page = page
@html = html
def initialize(session, html, selector = nil)
@session = session
@html = html
@selector = selector
end

Expand Down Expand Up @@ -210,15 +210,15 @@ def find_field(id_or_name_or_label, *field_types)

def links_within(selector)
(dom / selector / "a[@href]").map do |link_element|
Link.new(@page, link_element)
Link.new(@session, link_element)
end
end

def forms
return @forms if @forms

@forms = (dom / "form").map do |form_element|
Form.new(@page, form_element)
Form.new(@session, form_element)
end
end

Expand Down
14 changes: 7 additions & 7 deletions lib/webrat/core/session.rb
Expand Up @@ -18,7 +18,11 @@ def save_and_open_page
end

open_in_browser(filename)
end
end

def current_url
@current_page.url
end

def doc_root
nil
Expand Down Expand Up @@ -52,10 +56,6 @@ def current_scope
current_page.scope
end

def current_page=(new_page)
@current_page = new_page
end

# Reloads the last page requested. Note that this will resubmit forms
# and their data.
#
Expand All @@ -81,11 +81,11 @@ def clicks_link_within(selector, link_text)
alias_method :click_link_within, :clicks_link_within

def within(selector)
yield Scope.new(current_page, response_body, selector)
yield Scope.new(self, response_body, selector)
end

def visits(*args)
Page.new(self, *args)
@current_page = Page.new(self, *args)
end

alias_method :visit, :visits
Expand Down
2 changes: 1 addition & 1 deletion lib/webrat/rails/session.rb
Expand Up @@ -12,7 +12,7 @@ class Session
# Example:
# visits "/"
def visits(*args)
Webrat::Page.new(webrat_session, *args)
@webrat_session.visits(*args)
end

def respond_to?(name)
Expand Down

0 comments on commit 1d39fe7

Please sign in to comment.