More work on Webrat::Methods (not currently used for anything just yet)
This commit is contained in:
parent
4a898b4223
commit
c01778b0d3
|
@ -5,28 +5,34 @@ module Webrat
|
||||||
meths.each do |meth|
|
meths.each do |meth|
|
||||||
self.class_eval <<-RUBY
|
self.class_eval <<-RUBY
|
||||||
def #{meth}(*args, &blk)
|
def #{meth}(*args, &blk)
|
||||||
with_session do |sess|
|
webrat_session.#{meth}(*args, &blk)
|
||||||
sess.#{meth}(*args, &blk)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
RUBY
|
RUBY
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def with_session
|
def self.delegate_to_session_returning_response(*meths)
|
||||||
@session ||= ::Webrat::Session.new
|
meths.each do |meth|
|
||||||
yield @session
|
self.class_eval <<-RUBY
|
||||||
@session.response
|
def #{meth}(*args, &blk)
|
||||||
|
webrat_session.#{meth}(*args, &blk)
|
||||||
|
return webrat_session.response
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# all of these methods delegate to the @session, which should
|
def webrat_session
|
||||||
# be created transparently.
|
@webrat_session ||= ::Webrat::Session.new
|
||||||
delegate_to_session :visits, :within, :clicks_link_within,
|
end
|
||||||
:reload, :header, :http_accept, :basic_auth,
|
|
||||||
|
delegate_to_session :within, :header, :http_accept, :basic_auth,
|
||||||
:save_and_open_page, :fill_in, :check,
|
:save_and_open_page, :fill_in, :check,
|
||||||
:uncheck, :choose, :select, :attach_file,
|
:uncheck, :choose, :select, :attach_file,
|
||||||
:click_area, :click_link, :click_button,
|
:field_labeled, :cookies, :response, :current_page,
|
||||||
:field_labeled
|
:current_url
|
||||||
|
|
||||||
|
delegate_to_session_returning_response :visits, :click_link, :click_area, :click_button, :reload, :clicks_link_within
|
||||||
|
|
||||||
alias reloads reload
|
alias reloads reload
|
||||||
alias visit visits
|
alias visit visits
|
||||||
|
|
Loading…
Reference in New Issue