From 0c2b2d9626b6aa36b17a0c57f461244ec5698e46 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sat, 6 Oct 2012 08:37:41 -0500 Subject: [PATCH 01/11] include Capybara::DSL and Capybara::RSpecMatchers in spec/features - See https://github.com/jnicklas/capybara/pull/809 --- lib/rspec/rails/vendor/capybara.rb | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/rspec/rails/vendor/capybara.rb b/lib/rspec/rails/vendor/capybara.rb index 52ca7f377c..c033868711 100644 --- a/lib/rspec/rails/vendor/capybara.rb +++ b/lib/rspec/rails/vendor/capybara.rb @@ -8,20 +8,26 @@ rescue LoadError end -RSpec.configure do |c| - if defined?(Capybara::RSpecMatchers) - c.include Capybara::RSpecMatchers, :type => :view - c.include Capybara::RSpecMatchers, :type => :helper - c.include Capybara::RSpecMatchers, :type => :mailer - c.include Capybara::RSpecMatchers, :type => :controller - end +if defined?(Capybara) + RSpec.configure do |c| + if defined?(Capybara::DSL) + c.include Capybara::DSL, :type => :controller + c.include Capybara::DSL, :example_group => { + :file_path => c.escaped_path(%w[spec features]) + } + end - if defined?(Capybara::DSL) - c.include Capybara::DSL, :type => :controller - end + if defined?(Capybara::RSpecMatchers) + c.include Capybara::RSpecMatchers, :type => :view + c.include Capybara::RSpecMatchers, :type => :helper + c.include Capybara::RSpecMatchers, :type => :mailer + c.include Capybara::RSpecMatchers, :type => :controller + c.include Capybara::RSpecMatchers, :example_group => { + :file_path => c.escaped_path(%w[spec features]) + } + end - unless defined?(Capybara::RSpecMatchers) || defined?(Capybara::DSL) - if defined?(Capybara) + unless defined?(Capybara::RSpecMatchers) || defined?(Capybara::DSL) c.include Capybara, :type => :request c.include Capybara, :type => :controller end From be2afcd0b2f24f89201e58ad8f8e506c74954c24 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sat, 6 Oct 2012 11:35:45 -0500 Subject: [PATCH 02/11] include RailsExampleGroup in spec/features (necessary when there is no AR) --- lib/rspec/rails/fixture_support.rb | 2 -- lib/rspec/rails/vendor/capybara.rb | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/rspec/rails/fixture_support.rb b/lib/rspec/rails/fixture_support.rb index 90bf69fd0c..b67738f8c3 100644 --- a/lib/rspec/rails/fixture_support.rb +++ b/lib/rspec/rails/fixture_support.rb @@ -3,7 +3,6 @@ module Rails if defined?(ActiveRecord::TestFixtures) module FixtureSupport extend ActiveSupport::Concern - include RSpec::Rails::SetupAndTeardownAdapter include RSpec::Rails::TestUnitAssertionAdapter include ActiveRecord::TestFixtures @@ -37,4 +36,3 @@ module FixtureSupport end end end - diff --git a/lib/rspec/rails/vendor/capybara.rb b/lib/rspec/rails/vendor/capybara.rb index c033868711..444f1fbb76 100644 --- a/lib/rspec/rails/vendor/capybara.rb +++ b/lib/rspec/rails/vendor/capybara.rb @@ -27,7 +27,11 @@ } end - unless defined?(Capybara::RSpecMatchers) || defined?(Capybara::DSL) + if defined?(Capybara::RSpecMatchers) || defined?(Capybara::DSL) + c.include RSpec::Rails::RailsExampleGroup, :example_group => { + :file_path => c.escaped_path(%w[spec features]) + } + else c.include Capybara, :type => :request c.include Capybara, :type => :controller end From 288cd4dae7edc9644f2f85024970992b1d0c1655 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 10:57:03 -0500 Subject: [PATCH 03/11] add CAPYBARA.md --- CAPYBARA.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +++ 2 files changed, 80 insertions(+) create mode 100644 CAPYBARA.md diff --git a/CAPYBARA.md b/CAPYBARA.md new file mode 100644 index 0000000000..b287932e9d --- /dev/null +++ b/CAPYBARA.md @@ -0,0 +1,76 @@ +rspec-rails supports integration with Capbyara out of the box by adding +its Capybara::DSL (visit/page) and Capybara::RSpecMatchers to the +examples in the applicable directories, which differ slightly between +Capybara 1.x and Capybara >= 2.x. + +Note that you need to require "capybara/rspec" for this integration to work. + +## Capybara 1.x + +Capybara::DSL is added to examples in: + +* spec/requests # included by Capybara +* spec/controllers + +Capybara::RSpecMatchers is added to examples in: + +* spec/requests # included by Capybara +* spec/controllers +* spec/views +* spec/helpers +* spec/mailers + +## Capybara 2.0 + +To use Capybara 2.0, you need rspec-rails-2.11.1 or greater. + +Capybara::DSL is added to examples in: + +* spec/features + +Capybara::RSpecMatchers is added to examples in: + +* spec/features +* spec/controllers +* spec/views +* spec/helpers +* spec/mailers + +## Upgrading to Capybara-2.0 + +Many users have been confused by the co-existence of the the +Capybara::DSL (visit/page) alongside the rack-test DSL +(get|post|put|delete|head/response.body) in examples in spec/requests +and spec/controllers. As of rspec-2.11.1 and capybara-2.0.0.beta2, these +are separated as follows: + +* Capybara::DSL is included +** `spec/features` + +* rack-test DSL is included in +** `spec/requests` +** `spec/controllers` + +Capybara::RSpecMatchers is added to examples in: + +* spec/features +* spec/controllers +* spec/views +* spec/helpers +* spec/mailers + +If you're upgrading to Capybara-2.0 and you used visit/page in +spec/requests you'll want to move those examples to spec/features and +they should just work. + +If you want to leave those examples in spec/requests, you can include +Capybara::DSL in those examples yourself as follows, but this is +absolutely not recommended as you will be overriding the intended +behavior and accepting the risks associated with doing so: + + # not recommended! + RSpec.configure do |c| + c.include Capybara::DSL, :example_group => { + :file_path => "spec/requests" + } + end diff --git a/README.md b/README.md index 02388746d2..95c5121c7d 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,10 @@ gem "webrat" gem "capybara" ``` +See [http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md](http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md) +for more info on Capybara integration. + + ## Living on edge Bundler makes it a snap to use the latest code for any gem your app depends on. For From 64aaaebace7221917cfec4a435ea766eccf5a3ef Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 11:04:35 -0500 Subject: [PATCH 04/11] prep for 2.11.1 --- Changelog.md | 12 ++++++++++++ lib/rspec/rails/version.rb | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 3133c5bf22..33015f85b4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,15 @@ +### 2.11.1 / 2012-10-14 +[full changelog](http://github.com/rspec/rspec-rails/compare/v2.11.0...v2.11.1) + +Capybara-2.0 integration support: + +* include RailsExampleGroup in spec/features (necessary when there is no AR) +* include Capybara::DSL and Capybara::RSpecMatchers in spec/features + +See [https://github.com/jnicklas/capybara/pull/809](https://github.com/jnicklas/capybara/pull/809) +and [http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md](http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md) +for background. + ### 2.11.0 / 2012-07-07 [full changelog](http://github.com/rspec/rspec-rails/compare/v2.10.1...v2.11.0) diff --git a/lib/rspec/rails/version.rb b/lib/rspec/rails/version.rb index 973ce1bd9e..b361987f3a 100644 --- a/lib/rspec/rails/version.rb +++ b/lib/rspec/rails/version.rb @@ -1,7 +1,7 @@ module RSpec module Rails module Version - STRING = '2.11.0' + STRING = '2.11.1' end end end From b235fcf458fc6f0e82fecfec90203ad01092dd87 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 11:13:15 -0500 Subject: [PATCH 05/11] need to add Capybara.md to .yardopts --- .yardopts | 1 + README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.yardopts b/.yardopts index 50c8b069f9..c592bd2a61 100644 --- a/.yardopts +++ b/.yardopts @@ -6,3 +6,4 @@ - Changelog.md License.txt +Capybara.md diff --git a/README.md b/README.md index 95c5121c7d..2fb55e42f3 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ gem "webrat" gem "capybara" ``` -See [http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md](http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md) +See [http://rubydoc.info/gems/rspec-rails/file/Capybara.md](http://rubydoc.info/gems/rspec-rails/file/Capybara.md) for more info on Capybara integration. From 0f38c85747cb250311df516c40d40ffe2697202a Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 11:18:47 -0500 Subject: [PATCH 06/11] one more rename --- CAPYBARA.md => Capybara.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CAPYBARA.md => Capybara.md (100%) diff --git a/CAPYBARA.md b/Capybara.md similarity index 100% rename from CAPYBARA.md rename to Capybara.md From 9af089c2fdb8fc7f66fd3ac0fd018846498c6b5c Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 11:31:29 -0500 Subject: [PATCH 07/11] better capy integration docs --- Capybara.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Capybara.md b/Capybara.md index b287932e9d..64bc649171 100644 --- a/Capybara.md +++ b/Capybara.md @@ -5,6 +5,15 @@ Capybara 1.x and Capybara >= 2.x. Note that you need to require "capybara/rspec" for this integration to work. +## Capybara::DSL + +Adds the `visit` and `page` methods, which work together to simulate a +`get` and provide access to the result (via `page`). + +## Capybara::RSpecMatchers + +Exposes matchers used to specify expected HTML content (e.g. `have_selector`). + ## Capybara 1.x Capybara::DSL is added to examples in: @@ -44,12 +53,8 @@ Capybara::DSL (visit/page) alongside the rack-test DSL and spec/controllers. As of rspec-2.11.1 and capybara-2.0.0.beta2, these are separated as follows: -* Capybara::DSL is included -** `spec/features` - -* rack-test DSL is included in -** `spec/requests` -** `spec/controllers` +* Capybara::DSL is included `spec/features` +* rack-test DSL is included in `spec/requests` and `spec/controllers` Capybara::RSpecMatchers is added to examples in: From 7d23257c7a33a6bec18518c551738492e0e7acfb Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 11:37:41 -0500 Subject: [PATCH 08/11] prep for 2.11.2 --- Changelog.md | 6 ++++-- lib/rspec/rails/version.rb | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Changelog.md b/Changelog.md index 33015f85b4..d7d51cc188 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,5 @@ -### 2.11.1 / 2012-10-14 -[full changelog](http://github.com/rspec/rspec-rails/compare/v2.11.0...v2.11.1) +### 2.11.2 / 2012-10-14 +[full changelog](http://github.com/rspec/rspec-rails/compare/v2.11.0...v2.11.2) Capybara-2.0 integration support: @@ -10,6 +10,8 @@ See [https://github.com/jnicklas/capybara/pull/809](https://github.com/jnicklas/ and [http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md](http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md) for background. +2.11.1 was yanked due to errant documentation. + ### 2.11.0 / 2012-07-07 [full changelog](http://github.com/rspec/rspec-rails/compare/v2.10.1...v2.11.0) diff --git a/lib/rspec/rails/version.rb b/lib/rspec/rails/version.rb index b361987f3a..b508b832b3 100644 --- a/lib/rspec/rails/version.rb +++ b/lib/rspec/rails/version.rb @@ -1,7 +1,7 @@ module RSpec module Rails module Version - STRING = '2.11.1' + STRING = '2.11.2' end end end From 34624a9dcb023601622ceb92caae784abc39d4fa Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 12:40:41 -0500 Subject: [PATCH 09/11] gotta add files to gemspec too --- rspec-rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rspec-rails.gemspec b/rspec-rails.gemspec index 7143525c7c..e44b211030 100644 --- a/rspec-rails.gemspec +++ b/rspec-rails.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.rubyforge_project = "rspec" s.files = `git ls-files -- lib/*`.split("\n") - s.files += %w[README.md License.txt Changelog.md .yardopts .document] + s.files += %w[README.md License.txt Changelog.md Capybara.md .yardopts .document] s.test_files = `git ls-files -- {spec,features}/*`.split("\n") s.rdoc_options = ["--charset=UTF-8"] s.require_path = "lib" From bfa2e95f1f051e573d2a52b6ad45a6ad284ff554 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 12:41:24 -0500 Subject: [PATCH 10/11] prep 2.11.3 --- lib/rspec/rails/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rspec/rails/version.rb b/lib/rspec/rails/version.rb index b508b832b3..ed2f57ce0b 100644 --- a/lib/rspec/rails/version.rb +++ b/lib/rspec/rails/version.rb @@ -1,7 +1,7 @@ module RSpec module Rails module Version - STRING = '2.11.2' + STRING = '2.11.3' end end end From c8fc8b28747a3410f0a35826987de1daa9480272 Mon Sep 17 00:00:00 2001 From: David Chelimsky Date: Sun, 14 Oct 2012 12:43:33 -0500 Subject: [PATCH 11/11] OMG, DRY violations in docs - prep for 2.11.4 --- Changelog.md | 6 +++--- lib/rspec/rails/version.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Changelog.md b/Changelog.md index d7d51cc188..cc12377e49 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,5 @@ -### 2.11.2 / 2012-10-14 -[full changelog](http://github.com/rspec/rspec-rails/compare/v2.11.0...v2.11.2) +### 2.11.4 / 2012-10-14 +[full changelog](http://github.com/rspec/rspec-rails/compare/v2.11.0...v2.11.4) Capybara-2.0 integration support: @@ -10,7 +10,7 @@ See [https://github.com/jnicklas/capybara/pull/809](https://github.com/jnicklas/ and [http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md](http://rubydoc.info/gems/rspec-rails/file/CAPYBARA.md) for background. -2.11.1 was yanked due to errant documentation. +2.11.1, .2, .3 were yanked due to errant documentation. ### 2.11.0 / 2012-07-07 [full changelog](http://github.com/rspec/rspec-rails/compare/v2.10.1...v2.11.0) diff --git a/lib/rspec/rails/version.rb b/lib/rspec/rails/version.rb index ed2f57ce0b..3efcdb75c8 100644 --- a/lib/rspec/rails/version.rb +++ b/lib/rspec/rails/version.rb @@ -1,7 +1,7 @@ module RSpec module Rails module Version - STRING = '2.11.3' + STRING = '2.11.4' end end end