Skip to content

Commit

Permalink
Initial support for choosing webrat or capybara
Browse files Browse the repository at this point in the history
- wraps webrat and capybara includes in blocks that are only eval'd when
  either is loaded
  • Loading branch information
justinko authored and dchelimsky committed Aug 10, 2010
1 parent 1bdb874 commit d4ff873
Show file tree
Hide file tree
Showing 9 changed files with 80 additions and 13 deletions.
1 change: 1 addition & 0 deletions features/support/env.rb
@@ -1,4 +1,5 @@
require 'aruba'
require 'webrat'

unless File.directory?('./tmp/example_app')
system "rake generate:app generate:stuff"
Expand Down
10 changes: 7 additions & 3 deletions lib/rspec/rails.rb
@@ -1,4 +1,8 @@
require 'webrat'
begin
require 'capybara'
rescue LoadError
require 'webrat'
end

require 'rspec/core'
require 'rspec/rails/extensions'
Expand All @@ -8,5 +12,5 @@
require 'rspec/rails/fixture_support'
require 'rspec/rails/mocks'
require 'rspec/rails/module_inclusion'
require 'rspec/rails/example'

require 'rspec/rails/browser_simulators'
require 'rspec/rails/example'
20 changes: 20 additions & 0 deletions lib/rspec/rails/browser_simulators.rb
@@ -0,0 +1,20 @@
module RSpec
module Rails
module BrowserSimulators
extend ActiveSupport::Concern

def self.included(mod)
mod.instance_eval do
def webrat(&block)
block.call if defined?(Webrat)
end

def capybara(&block)
block.call if defined?(Capybara)
end
end
end

end
end
end
2 changes: 1 addition & 1 deletion lib/rspec/rails/example.rb
Expand Up @@ -5,4 +5,4 @@
require 'rspec/rails/example/view_example_group'
require 'rspec/rails/example/mailer_example_group'
require 'rspec/rails/example/routing_example_group'
require 'rspec/rails/example/model_example_group'
require 'rspec/rails/example/model_example_group'
11 changes: 9 additions & 2 deletions lib/rspec/rails/example/controller_example_group.rb
Expand Up @@ -81,9 +81,16 @@ module ControllerExampleGroup
include RSpec::Rails::Matchers::RedirectTo
include RSpec::Rails::Matchers::RenderTemplate
include RSpec::Rails::Matchers::RoutingMatchers
include RSpec::Rails::BrowserSimulators

include Webrat::Methods
include Webrat::Matchers
webrat do
include Webrat::Methods
include Webrat::Matchers
end

capybara do
include Capybara
end

# TODO (DC 7/31/2010) this is already included in RailsExampleGroup, but
# due to some load order dependency problem between Webrat::Matchers and
Expand Down
10 changes: 9 additions & 1 deletion lib/rspec/rails/example/helper_example_group.rb
Expand Up @@ -33,7 +33,15 @@ module HelperExampleGroup

include ActionView::TestCase::Behavior
include RSpec::Rails::ViewAssigns
include Webrat::Matchers
include RSpec::Rails::BrowserSimulators

webrat do
include Webrat::Matchers
end

capybara do
include Capybara
end

module ClassMethods
def determine_default_helper_class(ignore)
Expand Down
10 changes: 9 additions & 1 deletion lib/rspec/rails/example/mailer_example_group.rb
Expand Up @@ -7,7 +7,15 @@ module MailerExampleGroup
include RSpec::Rails::RailsExampleGroup

include ActionMailer::TestCase::Behavior
include Webrat::Matchers
include RSpec::Rails::BrowserSimulators

webrat do
include Webrat::Matchers
end

capybara do
include Capybara
end

included do
metadata[:type] = :mailer
Expand Down
19 changes: 15 additions & 4 deletions lib/rspec/rails/example/request_example_group.rb
Expand Up @@ -19,8 +19,17 @@ module RequestExampleGroup

include ActionDispatch::Integration::Runner
include ActionDispatch::Assertions
include Webrat::Matchers
include Webrat::Methods
include RSpec::Rails::BrowserSimulators

webrat do
include Webrat::Matchers
include Webrat::Methods
end

capybara do
include Capybara
end

include RSpec::Rails::Matchers::RedirectTo
include RSpec::Rails::Matchers::RenderTemplate
include ActionController::TemplateAssertions
Expand All @@ -42,8 +51,10 @@ def last_response
@router = ::Rails.application.routes
end

Webrat.configure do |config|
config.mode = :rack
webrat do
Webrat.configure do |config|
config.mode = :rack
end
end
end

Expand Down
10 changes: 9 additions & 1 deletion lib/rspec/rails/example/view_example_group.rb
Expand Up @@ -25,7 +25,15 @@ module ViewExampleGroup
include ActionView::TestCase::Behavior
include RSpec::Rails::ViewAssigns
include RSpec::Rails::Matchers::RenderTemplate
include Webrat::Matchers
include RSpec::Rails::BrowserSimulators

webrat do
include Webrat::Matchers
end

capybara do
include Capybara
end

module ClassMethods
def _default_helper
Expand Down

0 comments on commit d4ff873

Please sign in to comment.