2009-11-12 16:51:31 +00:00
|
|
|
module Webcat
|
2009-11-12 17:09:29 +00:00
|
|
|
class << self
|
|
|
|
attr_writer :default_driver, :current_driver
|
2009-11-12 16:51:31 +00:00
|
|
|
|
2009-11-12 17:09:29 +00:00
|
|
|
def default_driver
|
|
|
|
@default_driver || :rack_test
|
|
|
|
end
|
2009-11-12 16:51:31 +00:00
|
|
|
|
2009-11-12 17:09:29 +00:00
|
|
|
def current_driver
|
|
|
|
@current_driver || default_driver
|
|
|
|
end
|
|
|
|
alias_method :mode, :current_driver
|
2009-11-12 16:51:31 +00:00
|
|
|
|
2009-11-12 17:09:29 +00:00
|
|
|
def use_default_driver
|
|
|
|
@current_driver = nil
|
|
|
|
end
|
2009-11-12 16:51:31 +00:00
|
|
|
|
2009-11-12 17:09:29 +00:00
|
|
|
def session_pool
|
|
|
|
@session_pool ||= {}
|
|
|
|
end
|
2009-11-12 16:51:31 +00:00
|
|
|
end
|
|
|
|
|
2009-11-12 17:09:29 +00:00
|
|
|
extend(self)
|
|
|
|
|
|
|
|
attr_accessor :app
|
|
|
|
|
2009-11-12 16:51:31 +00:00
|
|
|
def current_session
|
2009-11-12 17:09:29 +00:00
|
|
|
driver = Webcat.current_driver
|
|
|
|
Webcat.session_pool["#{driver}#{app.object_id}"] ||= Webcat::Session.new(driver, app)
|
2009-11-12 16:51:31 +00:00
|
|
|
end
|
2009-11-12 17:09:29 +00:00
|
|
|
|
2009-11-12 16:51:31 +00:00
|
|
|
SESSION_METHODS = [
|
|
|
|
:visit, :body, :click_link, :click_button, :fill_in, :choose,
|
|
|
|
:set_hidden_field, :check, :uncheck, :attach_file, :select
|
|
|
|
]
|
|
|
|
SESSION_METHODS.each do |method|
|
|
|
|
class_eval <<-RUBY, __FILE__, __LINE__+1
|
|
|
|
def #{method}(*args, &block)
|
|
|
|
current_session.#{method}(*args, &block)
|
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|