thoughtbot--shoulda-matchers/NEWS.md

330 lines
12 KiB
Markdown
Raw Normal View History

# 2.6.1
* Fix `ComparisonMatcher` so that `validate_numericality_of` comparison matchers
work with large numbers (#483).
2014-04-12 21:42:19 +00:00
# 2.6.0
2013-09-20 20:11:59 +00:00
2014-04-11 21:30:19 +00:00
* The boolean argument to `have_db_index`'s `unique` option is now optional, for
consistency with other matchers.
* Association matchers now test that the model being referred to (either
implicitly or explicitly, using `:class_name`) actually exists.
* Add ability to test `:autosave` option on associations.
* Fix `validate_uniqueness_of(...).allow_nil` so that it can be used against an
non-password attribute which is in a model that `has_secure_password`. Doing
so previously would result in a "Password digest missing on new record" error.
* Fix description for `validate_numericality_of` so that if the matcher fails,
the error message reported does not say the matcher accepts integer values if
you didn't specify that.
* Fix `ensure_inclusion_of` so that you can use it against a boolean column
(and pass boolean values to `in_array`). There are two caveats:
* You should not test that your attribute allows both true and false
(`.in_array([true, false]`); there's no way to test that it doesn't accept
anything other than that.
* You cannot test that your attribute allows nil (`.in_array([nil])`) if
the column does not allow null values.
* Change `validate_uniqueness_of(...)` so that it provides default values for
non-nullable attributes.
2014-04-11 21:30:19 +00:00
* Running `rake` now installs Appraisals before running the test suite.
(Additionally, we now manage Appraisals using the `appraisal` executable in
Appraisal 1.0.0.)
* Add `allow_nil` option to `validate_numericality_of` so that you can validate
that numeric values are validated only if a value is supplied.
* Fix `validate_numericality_of` so that test fails when the value with
`greater_than`, `greater_than_or_equal_to`, `less_than`, `less_than_or_equal_
to` or `equal_to` is not appropriate.
* Change `validate_presence_of` under Rails 4 so that if you are using it with a
user whose model `has_secure_password` and whose password is set to a value,
you will be instructed to use a user whose password is blank instead. The
reason for this change is due to the fact that Rails 4's version of
`has_secure_password` defines #password= such that `nil` will be ignored,
which interferes with how `validate_presence_of` works.
* Add ability to test `belongs_to` associations defined with `:inverse_of`.
2014-04-11 21:30:19 +00:00
* Add back matchers that were removed in 2.0.0: `permit`, for testing strong
parameters, and `delegate_method`, for testing delegation.
* Add new matchers for testing controller filters: `before_filter`,
`after_filter`, and `around_filter` (aliased to `before_action`,
`after_action` and `around_action` for Rails 4).
* Fix `rescue_from` matcher so that it does not raise an error when testing
a method handler which has been marked as protected or private.
2014-04-11 21:30:19 +00:00
* Fix compatibility issues with Rails 4.1:
* `set_the_flash` and `have_and_belongs_to_many` no longer raise errors
* Minitest no longer prints warnings whenever shoulda-matchers is required
2014-01-10 22:37:34 +00:00
# v 2.5.0
2013-10-10 19:34:51 +00:00
* Fix Rails/Test::Unit integration to ensure that the test case classes we are
re-opening actually exist.
2014-01-10 22:14:19 +00:00
* Fix `ensure_length_of` so that it uses the right message to validate when
`is_equal_to` is specified in conjunction with a custom message.
* The `route` matcher now accepts specifying a controller/action pair as a
string instead of only a hash (e.g. `route(...).to('posts#index')` instead of
`route(...).to(controller: 'posts', action: 'index')`).
* The `ensure_inclusion_of` matcher now works with a decimal column.
2014-01-10 22:14:19 +00:00
* Under Rails 3, if you had an association matcher chained with the
the `order` submatcher -- e.g. `should have_many(:foos).order(:bar)` -- and
your association had an `:include` on it, using the matcher would raise an
error. This has been fixed.
2014-01-10 22:14:19 +00:00
* Fix `validate_uniqueness_of` so it doesn't fail if the attribute under
test has a limit of fewer than 16 characters.
* You can now test that your `has_many :through` or `has_one :through`
associations are defined with a `:source` option.
2014-01-10 22:14:19 +00:00
* Add new matcher `validates_absence_of`.
* Update matchers so that they use `failure_message` and
`failure_message_when_negated` to define error messages. These are new methods
in the upcoming RSpec 3 release which replace `failure_message_for_should` and
`failure_message_for_should_not`. We've kept backward compatibility so all of
your existing tests should still work -- this is just to make sure when RSpec
3 is released you don't get a bunch of warnings.
2013-12-05 16:38:30 +00:00
2013-09-20 20:11:59 +00:00
# v 2.4.0
2013-10-10 19:34:51 +00:00
* Fix a bug with the `validate_numericality_of` matcher that would not allow the
`with_message` option on certain submatchers.
2013-03-28 19:56:05 +00:00
* Fix a regression with context-dependent validations in ActiveResource
2013-08-16 22:47:08 +00:00
* shoulda-matchers is now fully compatible with Rails 4.
* When not using RSpec, shoulda-matchers is now auto-included into
ActiveSupport::TestCase instead of Test::Unit::TestCase (in Rails 4
the former no longer inherits from the latter).
2013-08-16 17:05:00 +00:00
# v 2.3.0
* Fix a bug in `ensure_inclusion_of` that would cause issues with using
`in_array` with an integer value.
* Add support for PostgreSQL UUID columns to `validates_uniqueness_of` (#334).
* Fix `validates_numericality_of` so that `is_equal_to` submatcher works
correctly (#326).
* Fix context support for validation matchers and disallowed values (#313).
* Add a `counter_cache` submatcher for `belongs_to` associations (#311).
* Add a `rescue_from` matcher for Rails controllers which checks that the
correct ActiveSupport call has been made and that the handlers exist without
actually throwing an exception (#287).
* Changed the scope of AssociationMatcher methods from protected to private.
* Extracted `#order`, `#through`, and `#dependent` from AssociationMatcher as
their own submatchers.
2013-06-11 14:35:05 +00:00
# v 2.2.0
* Fix `have_and_belong_to_many` matcher issue for Rails 4.
* Fix `validate_uniqueness_of.scoped_to` issue when the scoped field is already
taken (#207).
2013-05-24 03:26:45 +00:00
* Add comparison submatchers to `validate_numericality_of` to correspond to the
comparison options you can give to `validates_numericality_of` (#244).
2013-05-05 15:51:57 +00:00
# v 2.1.0
* Add missing `failure_message_for_should_not` implementations to
`validate_numericality_of` and its submatchers
* Support validation contexts for testing validations `on: :create` and when
using custom contexts like `model.valid?(:my_context)`.
2013-03-04 03:34:38 +00:00
* Fix a bug in validations with autosaved models.
2013-04-26 15:48:44 +00:00
* Fix maximum value detection for the `ensure_inclusion_of` and
`ensure_exclusion_of` matchers.
* Add `:odd` and `:even` options to the `validate_numericality_of` matcher.
2013-04-26 15:48:44 +00:00
* Add `:touch` option to AssociationMatcher.
* Ruby 2.0.0 is now officially supported.
2013-04-26 15:48:44 +00:00
* Fix the issue where using `%{attribute}` or `%{model}` in I18n translations
raised exceptions.
* Support datetime columns in `validate_uniqueness_of.scoped_to`.
* Add `allow_nil` option to the `validate_uniqueness_of` matcher.
2013-03-19 22:55:19 +00:00
# v 2.0.0
* Remove the following matchers:
* `assign_to`
* `respond_with_content_type`
* `query_the_database`
* `validate_format_of`
* `have_sent_email`
* `permit` (strong parameters matcher)
* `delegate_method`
2013-04-26 15:48:44 +00:00
2013-03-19 22:55:19 +00:00
* For more information about 2.0 changes, see:
2013-04-26 15:48:44 +00:00
http://robots.thoughtbot.com/post/47031676783/shoulda-matchers-2-0.
2013-03-19 22:55:19 +00:00
2013-03-29 20:45:43 +00:00
# v 1.5.6
2013-04-26 15:48:44 +00:00
* Revert previous change in AllowValueMatcher that added a check for a
properly-set attribute.
2013-03-28 19:56:05 +00:00
# v 1.5.5
2013-04-26 15:48:44 +00:00
* AllowValueMatcher checks that the right value is used for attempts at
setting the attribute with it.
* Please note that previously-passing tests might now fail. It is likely that
it's not a bug, but please make sure that the code you're testing is written
properly before submitting an issue.
2013-04-26 15:48:44 +00:00
* Use DisallowValueMatcher for `disallows_value_of` method.
* Assert `class_name` value on real class name for AssociationMatcher.
* Correct the variable used for `validate_confirmation_of` matcher description.
2013-03-15 21:18:00 +00:00
2013-03-21 19:50:13 +00:00
# v 1.5.4
2013-04-26 15:48:44 +00:00
* Properly-released version of 1.5.3.
2013-03-21 19:50:13 +00:00
# v 1.5.3 - yanked due to mis-release
2013-04-26 15:48:44 +00:00
* Alleviate the need to add `rspec` gem to your app.
2013-03-21 19:18:50 +00:00
2013-03-19 13:37:56 +00:00
# v 1.5.1
2013-04-19 21:14:26 +00:00
* Bump version dependency of Bourne to allow for Mocha upgrade.
2013-04-26 15:48:44 +00:00
2013-04-19 21:14:26 +00:00
* Should fix incompatibility with MiniTest.
2013-03-19 13:37:56 +00:00
2013-03-15 21:18:00 +00:00
# v 1.5.0
* Deprecate the following matchers:
2013-04-26 15:48:44 +00:00
* `assign_to`
* `respond_with_content_type`
* `query_the_database`
* `validate_format_of`
* `have_sent_email`
* `permit` (strong parameters matcher)
* `delegate_method`
2013-03-15 21:18:00 +00:00
2012-12-25 22:26:33 +00:00
* Use RSpec's native `configure.include` syntax for including matchers into
2013-04-26 15:48:44 +00:00
RSpec (#204).
2012-12-25 22:26:33 +00:00
2013-04-19 21:14:26 +00:00
* Do not force MiniTest loading when test-unit is available (this was fixed
2013-04-26 15:48:44 +00:00
before 1.3.0 then reverted in 1.3.0).
2013-01-03 20:17:38 +00:00
2012-11-30 15:31:52 +00:00
# v1.4.2
2013-04-26 15:48:44 +00:00
* Add a new `delegate_method` matcher.
2012-11-30 15:31:52 +00:00
2012-10-15 15:48:11 +00:00
# v1.4.1
2013-04-26 15:48:44 +00:00
* Fix an issue when used with Test::Unit on the allow value matcher.
2012-10-15 15:48:11 +00:00
2013-04-26 15:48:44 +00:00
* Fix an issue with using `ensure_inclusion_of(:attr)` given an array of true or false values.
2012-10-15 15:48:11 +00:00
2012-10-05 17:25:13 +00:00
# v1.4.0
2013-04-26 15:48:44 +00:00
* Add `strict` option to validation matchers.
2012-10-05 17:25:13 +00:00
* Verify that arguments to `set_the_flash` matcher are valid.
* Fix issue in ValidateUniquenessMatcher that could cause an error on postgres.
* You can now pass an array to `ensure_exclusion_of` using `in_array`.
2013-01-03 20:17:38 +00:00
* Allow testing of `:foreign_key` option for `has_one` relationships using the association matcher.
2012-10-05 17:25:13 +00:00
* Fix bug where `ensure_length_of` would pass if the given string was too long.
* `allow_blank` will now allow values such as: ' ', '\n', and '\r'.
* Test outside values for `ensure_inclusion_of` when given an array.
2013-04-26 15:48:44 +00:00
* Fix the output of the `set_the_flash` matcher.
2012-10-05 17:25:13 +00:00
2012-08-30 18:19:26 +00:00
# v1.3.0
2012-06-15 17:28:56 +00:00
2013-04-26 15:48:44 +00:00
* `validate_format_of` will accept `allow_blank(bool)` and `allow_nil(bool)`.
2013-04-19 21:14:26 +00:00
* Prefer Test::Unit to MiniTest when loading integrations so that RubyMine is
2012-06-15 17:28:56 +00:00
happy (#88).
* `validates_uniqueness_of` will now create a record if one does not exist.
Previously, users were required to create a record in the database before
using this matcher.
2012-07-20 14:38:56 +00:00
* Fix an edge case when where the matchers weren't loaded into Test::Unit when
mixing RSpec and Test::Unit tests and also loading both the 'rspec-rails' gem
and 'shoulda-matchers' gem from the same Gemfile group, namely [:test,
:development].
2012-07-20 14:59:27 +00:00
* `controller.should_not render_partial` now correctly matches `render partial: "partial"`.
2012-06-14 19:40:39 +00:00
# v1.2.0
2012-04-20 15:46:47 +00:00
* `ensure_inclusion_of` now has an `in_array` parameter:
`ensure_inclusion_of(:attr).in_array(['foo', 'bar'])`. It cannot be used with
2012-04-20 15:47:21 +00:00
the `.in_range` option. (vpereira)
2012-04-20 15:46:47 +00:00
* `ensure_in_inclusion_of` with `in_array` will accept `allow_blank(bool)` and `allow_nil(false)`
2012-04-20 18:50:29 +00:00
* Test against Rails 3.2.
2012-04-20 18:56:58 +00:00
* Fix `ensure_length_of` to use all possible I18n error messages.
* `have_db_index.unique(nil)` used to function exactly the same as
`have_db_index` with no unique option. It now functions the same as
`have_db_index.unique(false)`.
2012-06-14 19:40:39 +00:00
* In 1.1.0, `have_sent_email` checked all emails to ensure they matched. It now
checks that only one email matches, which restores 1.0.0 behavior.
2012-04-13 15:02:27 +00:00
# v1.1.0
2012-04-04 00:57:53 +00:00
2013-04-26 15:48:44 +00:00
* Add `only_integer` option to `validate_numericality_of`:
2012-04-04 00:57:53 +00:00
`should validate_numericality_of(:attribute).only_integer`
2012-04-10 00:41:20 +00:00
2013-04-26 15:48:44 +00:00
* Add a `query_the_database` matcher:
2012-04-04 00:57:53 +00:00
`it { should query_the_database(4.times).when_calling(:complicated_method) }`
`it { should query_the_database(4.times).or_less.when_calling(:complicated_method) }`
`it { should_not query_the_database.when_calling(:complicated_method) }`
* Database columns are now correctly checked for primality. E.G., this works
now: `it { should have_db_column(:id).with_options(:primary => true) }`
* The flash matcher can check specific flash keys using [], like so:
`it { should set_the_flash[:alert].to("Password doesn't match") }`
2012-04-10 00:41:20 +00:00
* The `have_sent_email` matcher can check `reply_to`:
2012-04-04 00:57:53 +00:00
` it { should have_sent_email.reply_to([user, other]) }`
2013-04-26 15:48:44 +00:00
* Add `validates_confirmation_of` matcher:
2012-04-04 00:57:53 +00:00
`it { should validate_confirmation_of(:password) }`
2013-04-26 15:48:44 +00:00
* Add `serialize` matcher:
2012-04-04 00:57:53 +00:00
`it { should serialize(:details).as(Hash).as_instance_of(Hash) }`
2012-04-10 00:43:40 +00:00
* shoulda-matchers checks for all possible I18n keys, instead of just
e.g. `activerecord.errors.messages.blank`
2012-04-13 14:58:56 +00:00
* Add `accept_nested_attributes` matcher
2012-04-11 03:23:24 +00:00
* Our very first dependency: ActiveSupport >= 3.0.0