teamcapybara--capybara/lib/capybara/dsl.rb

67 lines
1.5 KiB
Ruby
Raw Normal View History

2009-11-16 21:02:16 +00:00
module Capybara
2009-11-12 17:09:29 +00:00
class << self
2009-11-16 19:11:42 +00:00
attr_writer :default_driver, :current_driver, :javascript_driver
2009-11-12 16:51:31 +00:00
attr_accessor :app
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
2009-11-12 17:09:29 +00:00
end
alias_method :mode, :current_driver
2009-11-16 19:11:42 +00:00
def javascript_driver
@javascript_driver || :selenium
end
2009-11-12 16:51:31 +00:00
2009-11-12 17:09:29 +00:00
def use_default_driver
@current_driver = nil
2009-11-12 17:09:29 +00:00
end
2009-11-12 16:51:31 +00:00
def current_session
2009-12-08 18:45:54 +00:00
session_pool["#{current_driver}#{app.object_id}"] ||= Capybara::Session.new(current_driver, app)
end
def current_session?
session_pool.has_key?("#{current_driver}#{app.object_id}")
end
2009-11-15 22:20:37 +00:00
def reset_sessions!
@session_pool = nil
end
private
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)
def page
2009-11-16 21:02:16 +00:00
Capybara.current_session
end
2009-11-12 17:09:29 +00:00
2009-11-12 16:51:31 +00:00
SESSION_METHODS = [
2009-12-25 17:50:01 +00:00
:visit, :current_url, :body, :click_link, :click_button, :drag, :fill_in,
:choose, :has_xpath?, :has_no_xpath?, :has_css?, :has_no_css?,
:check, :uncheck, :attach_file, :select, :source,
:has_content?, :has_no_content?, :within, :within_fieldset, :within_table,
2009-12-25 17:50:01 +00:00
:save_and_open_page, :find, :find_field, :find_link, :find_button,
:field_labeled, :all, :locate, :evaluate_script,
2009-12-25 17:50:01 +00:00
:click, :wait_until
2009-11-12 16:51:31 +00:00
]
SESSION_METHODS.each do |method|
class_eval <<-RUBY, __FILE__, __LINE__+1
def #{method}(*args, &block)
page.#{method}(*args, &block)
2009-11-12 16:51:31 +00:00
end
RUBY
end
end