1
0
Fork 0
mirror of https://github.com/thoughtbot/shoulda-matchers.git synced 2022-11-09 12:01:38 -05:00
Commit graph

14 commits

Author SHA1 Message Date
Elliot Winkler
12543ede2e Use same assertion class as Rails, if loaded
Given this scenario:

* Using Rails 4.1
* Gemfile has `gem 'shoulda-matchers', require: false`
* spec_helper has `require 'shoulda/matchers'` following
  `require 'rspec/rails'`
* Using Spring to run tests

matchers that delegate to assertions in Rails (e.g. `render_template`
and `route`) will fail in the wrong way if used. They fail because in
order to use these assertions, we expect that the assertions will
raise a specific exception, an exception that corresponds to whichever
test framework that Rails is using. For Rails versions that used
Test::Unit, this is Test::Unit::AssertionFailedError. For current Rails
versions, which now use Minitest, this exception is Minitest::Assertion.

The problem is that instead of asking Rails which exception class it's
using, we are trying to detect this exception class ourselves (for
cases in which Rails is not being used). This leads to the wrong class
being detected: when using a Rails version that uses Minitest, we choose
Test::Unit::AssertionFailedError as the class. This happens using the
exact scenario above because even though shoulda-matchers is loaded
after rspec-rails, rspec-rails itself defines
Test::Unit::AssertionFailedError.

Also add Cucumber tests that confirms this exact scenario works.
2014-06-27 14:06:47 -06:00
Elliot Winkler
4d8faed1c4 Generate docs using YARD 2014-06-20 16:41:32 -06:00
Elliot Winkler
ed428417a3 Move dev dependencies to Gemfile
Currently some dev dependencies are in the Gemfile, and some are in the
gemspec. The dependencies in the Gemfile are there because they are
using Bundler-specific options, so there is a legitimate reason for them
to be there, however, it's confusing to have gems in two places. So the
common denominator is to have them in the Gemfile.
2014-06-19 22:24:29 -06:00
Elliot Winkler
f13e069f09 Add missing test dependences to Appraisals
Since as of commit 2748b75087, we no
longer install dependencies inside of the Rails app that is generated
and used to run all of the tests, we have to require all of the
dependencies that the app would install inside of the appropriate
Appraisals.

This was mostly straightforward except for some workarounds with the
turn gem:

* Rails 3.1 requires two versions of turn depending on which Ruby
  version you're using. On 1.9.2, it uses turn 0.9.2; after 1.9.2, it
  uses ~> 0.9.3. To accommodate this we have to have two versions of the
  Rails 3.1 appraisal which declare the different turn versions.
* Rails 3.1 also loads the turn gem even if, in the Gemfile for the app,
  turn is declared with `require: false`. This causes a problem while
  running our tests because turn actually requires minitest/autorun,
  which adds a hook so when Ruby exits, Minitest tests are run. Because
  we're already using RSpec, Minitest will try to re-run the `rspec`
  command we ran within a Minitest environment. This will fail since we
  are using RSpec-specific command line options to run the tests.
  Unfortunately there's no way to shut off minitest/autorun after it's
  been required, so we have to monkey-patch Minitest's #run method so
it's a no-op.
2014-05-21 09:50:46 -06:00
Mauro George
714cf87d78 Add support to rails 4.1.0 2014-04-08 17:41:31 -03:00
Elliot Winkler
602be16e8e Use the new appraisal executable in 1.0.0.beta1 2014-02-22 14:47:01 -07:00
Matt Daubert
5815d38fa0 Add have_secure_password matcher 2013-09-05 19:51:04 -06:00
Elliot Winkler
630dc2212d Bump shoulda-context to ~>1.1.2 for Rails 4 compat 2013-08-16 15:32:08 -06:00
Derek Prior
2e4e76ccfb Add Rails 4 Appraisal
Rails 4 includes strong parameters and removed attr_accessible
(protected attributes). I removed the strong_parameters development
dependency and added it to all non-4.0 appraisals. I also added the
'protected_attributes' gem to the 4.0 appraisal because the test suite
examples make heavy use of attr_accessible.
2013-08-16 15:32:06 -06:00
Derek Prior
cd61fb6085 Ruby 2.0 Support
* Add Ruby 2.0 support to the Appraisals
* Update travis to test 2.0.0 with the 3.2 gemfile. Clean up the travis
  matrix to favor the include syntax over exclude.
* Edit gemfile.locks to point to relative paths.
2013-04-19 17:11:45 -04:00
Dan Croak
b79360441d Loosen Bourne dependency to ~> 1.3
> Use a pessimistic version in the Gemfile for gems that follow semantic
> versioning, such as rspec, factory_girl, and capybara.

https://github.com/thoughtbot/guides/tree/master/best-practices

* Upgrade dependencies so specs run on new Bourne.
* Use semantic versions in step_definitions gems.
* Rely on ActiveSupport::Dependencies.clear for reloading constants.
  http://rkh.im/code-reloading
2013-03-18 23:31:11 -07:00
Erik Michaels-Ober
dfcf777f47 Update 3.2.gemfile.lock 2012-12-03 08:32:44 -08:00
Gabe Berke-Williams
04ce17726d Update appraisals to latest Rails versions. 2012-10-01 15:36:04 -04:00
Gabe Berke-Williams
aff28245e7 Test against Rails 3.2. 2012-04-20 14:35:57 -04:00