Up to [cvs.NetBSD.org] / pkgsrc / devel / ruby-shoulda-matchers
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
devel/ruby-shoulda-matchers: update to 6.1.0 pkgsrc change: update HOMEPAGE. 6.0.0 (2023-12-22) Backward-incompatible changes * Drop support for Rails 5.2 and 6.0 as well as Ruby 2.6 and 2.7 they've been end-of-lifed by @dougmrqs and @HeitorMC. The gem now supports Ruby 3.0+ and Rails 6.1+. (#1521, #1522, #1547, #1548) Bug fixes * Fix validate_uniqueness_of matcher not supporting column of the type timestampz by @callahat. (#1544) * Ensure that validation specs work for ActiveModel without ActiveRecord by @stonefield. (#1580) Features * Add normalize matcher by @stephannv. (#1558) * Add validates_comparison_of matcher by @matsales28. (#1552) * Add support for Ruby 3.2 by @petergoldstein. (#1536) * Add support for Ruby 3.3.0-rc1 by @mtasaka and @VSPPedro. ([#1579], #1588) * Add support for Rails 7.1 by @matsales28. (#1573) * Add support for array attributes on validate_length_of matcher by @jarenas9539. #1560 * Allow length validation on associations by @matsales28. (#1569) * Improve have_db_index to better handle columns with multiple indexes by @abrom. (#1542) * Implement of_sql_type qualifier on have_db_column matcher by @matsales28. (#1555) Improvements * When an unrelated error is seen with negated allow_value, give a hint by @matsales28. (#1570) Thanks everyone for the contributions! 6.1.0 (2024-01-19) Bug fixes * Fix negative form of validate_numericality matcher by @matsales28 (#1603) Features * Add support for negated matcher on have_secure_password matcher by @amalrik (#1593) * Add encrypt matcher to test usage of the encrypts macro by @theforestvn88 (#1581) * Add query_constraints qualifier on the association matchers by @matsales28 (#1604) Improvements * Remove array_column? helper from ValidateAbsenceOfMatcher by @jarenas9539 (#1562) * Bump rubocop version to 1.59.0 by @VSPPedro (#1600) * Update Ruby version to 3.3.0 by @VSSPedro(#1599) * Fix REPRODUCTION_SCRIPT.md link returning 404 by @VSPPedro (#1602) * Add support for globally enabled frozen-string-literals by @amalrik (#1598) * Adjust typos in the documentation by @matsales28 (#1597)
devel/ruby-shoulda-matchers: update to 5.3.0 5.3.0 (2022-12-16) Features * Add in: range matcher to validate_numericality_of. (#1512) * Support :uuid column type for validate_absence_of matcher. (#1518) Bug fixes * Fix confusing error message from validate_inclusion_of matcher when used against a polymorphic association. (#1523)
devel/ruby-shoulda-matchers: update to 5.2.0 pkgsrc changes: reduce pkglint warnings. 5.2.0 (2022-09-17) Features * Add without_scopes method to enum matcher. (#1453) * Add support for Ruby 3.1. (#1474) * Add allow_blank method to validate_presence_of matcher. (#1499) * Add support for Rails 7.0. No new Rails 7.0 features are supported, but only existing features that broke with the upgrade. (#1506)
devel/ruby-shoulda-matchers: update to 5.0.0 5.0.0 (2021-07-10) Bug fixes * Replace in?, method from ActiveSupport, with include? to prevent exception "undefined method in?" on non-Rails app. (#1405) Features * Add support for Rails 6.1. No new Rails 6.1 features are supported, but only existing features that broke with the upgrade. (#1418) * Add support for RVM (Ruby Version Manager) to setting up local environment. (#1424) * Add support for alias in matcher define_enum. (#1419) * Add support for Ruby 3.0. (#1406, #1427) Improvements * Remove deprecated warnings emitted on Rails 6.1 in ActiveModel errors. (#1444) Backward-incompatible changes * Drop support for Rails 4.2, 5.0 and 5.1 as well as Ruby 2.4 and 2.5 they've been end-of-lifed. The gem now supports Ruby 2.6+ and Rails 5.2+. (#1412, #1415, #1422, #1428, #1429) * Remove deprecated matchers: use_before_filter, use_after_filter, use_around_filter and allow_mass_assignment_of. (#1430, #1431)
devel/ruby-shoulda-matchers: update to 4.5.0 4.5.0 (2021-01-12) Features * Add support for has_secure_password custom attributes. (#1356) Bug fixes * Fix bundle exec yard doc replacing pygments.rb with rouge to keep the documentation up to date. (#1343) * Fix have_db_column.with_options not raising an error when the user adds an invalid value. (#1358) * Fix default value of assossiation_matcher.validate option. It was returning false instead of true. (#1378) * Fix validate_absence_of failing for array columns. (#1383) Improvements * Replace all links with http to https. (#1340) * Update the links for have_and_belong_to_many, have_many and have_one in the README to redirect the user to where the matcher description starts. (#1348) * Drop git ls-files in gemspec to help downstreams maintenance, because they often need to build packages in an environment that does not have git. (#1354) * Add comment about no support of validate_uniqueness_of(:item).scoped_to(array). (#1355) * Improve error message for assossiation_matcher.with_foreign_key option. (#1376)
devel/ruby-shoulda-matchers: update to 4.4.1 Update ruby-shoulda-matchers package to 4.4.1. 4.4.1 - 2020-08-26 Bug fixes * Revert reorganization around autoloading introduced in 4.4.0 which prevented matchers from being loaded. (#1334) 4.4.0 - 2020-08-25 Bug fixes * Fix performance of allow_value so that it doesn't hang if the given value is really long. (#1290) * Fix have_many so that it is possible to test an association that has a scope that takes an argument. (#952, #992) * Update validate_uniqueness_of to use the public validators_on instead of the private _validators when reading validations off of a model. This enables shoulda-matchers to be used with the schema_validations gem. (#995) * Update validate_uniqueness_of to work with scopes that are time columns. (#1190) * Fix have_and_belong_to_many so that when using the join_table qualifier you can pass a symbol rather than a string. (#1323) Features * Add an ignoring_check_for_db_index qualifier to the have_secure_token matcher, since has_secure_token encourages use of an index but does not enforce it. (#1278) * Add allow_blank to validate_length_of to match other validation matchers. (#725, #1318) * Add new matcher have_implicit_order_column which can be used to test the implicit_order_column setting for ActiveRecord models under Rails 6+. (#1243) * Add a new is_other_than qualifier to validate_numericality_of to be able to test the numericality validation's :other_than option. (#1282) * Add a new have_one_attached and have_many_attached matchers for testing the new model-level ActiveStorage macros in Rails 6. (#1102) Improvements * Update have_many when used against a :through association so that it fails if the inverse model does not have a belongs_to association. (#646, #723, c0a1578) * Add Ruby 2.7 to test matrix and default development Ruby. (#1310) * Remove warnings emitted on Ruby 2.7 in word_wrap. (#1314) * Remove warnings emitted on Ruby 2.7 in Doublespeak. (#1328) * Clean up requires within the code by converting them to autoloads. (#1320)
devel/ruby-shoulda-matchers: update to 4.3.0 Update ruby-shoulda-matchers to 4.3.0. Changes are too many to write here, please refer <https://github.com/thoughtbot/shoulda-matchers/blob/master/CHANGELOG.md>.
devel/ruby-shoulda-matchers: update to 3.1.2 # 3.1.2 ### Deprecations * This is the **last version** that supports Rails 4.0 and 4.1 and Ruby 2.0 and 2.1. ### Bug fixes * When the `permit` matcher was used without `#on`, the controller did not use `params#require`, the params object was duplicated, and the matcher did not recognize the `#permit` call inside the controller. This behavior happened because the matcher overwrote double registries with the same parameter hash whenever ActionController::Parameters was instantiated. * *Commit: [44c019]* * *Issue: [#899]* * *Pull request: [#902]* # 3.1.1 ### Bug fixes * Some matchers make use of ActiveSupport's `in?` method, but do not include the file where this is defined in ActiveSupport. This causes problems with projects using shoulda-matchers that do not include all of ActiveSupport by default. To fix this, replace `in?` with Ruby's builtin `include?`. * *Pull request: [#879]* * `validate_uniqueness_of` works by creating a record if it doesn't exist, and then testing against a new record with various attributes set that are equal to (or different than) corresponding attributes in the existing record. In 3.1.0 a change was made whereby when the uniqueness matcher is given a new record and creates an existing record out of it, it ensures that the record is valid before continuing on. This created a problem because if the subject, before it was saved, was empty and therefore in an invalid state, it could not effectively be saved. While ideally this should be enforced, doing so would be a backward-incompatible change, so this behavior has been rolled back. ([#880], [#884], [#885]) * *Commit: [45de869]* * *Issues: [#880], [#884], [#885]* * Fix an issue with `validate_uniqueness_of` + `scoped_to` when used against a model where the attribute has multiple uniqueness validations and each validation has a different set of scopes. In this case, a test written for the first validation (and its scopes) would pass, but tests for the other validations (and their scopes) would not, as the matcher only considered the first set of scopes as the *actual* set of scopes. * *Commit: [28bd9a1]* * *Issues: [#830]* ### Improvements * Update `validate_uniqueness_of` so that if an existing record fails to be created because a column is non-nullable and was not filled in, raise an ExistingRecordInvalid exception with details on how to fix the test. * *Commit: [78ccfc5]* [#879]: https://github.com/thoughtbot/shoulda-matchers/issues/879 [45de869]: https://github.com/thoughtbot/shoulda-matchers/commit/45de8698487d57f559c5bf35818d1c1ee82b0e77 [#880]: https://github.com/thoughtbot/shoulda-matchers/issues/880 [#884]: https://github.com/thoughtbot/shoulda-matchers/issues/884 [#885]: https://github.com/thoughtbot/shoulda-matchers/issues/885 [78ccfc5]: https://github.com/thoughtbot/shoulda-matchers/commit/78ccfc50b52fa686c109d614df66744b0da65380 [28bd9a1]: https://github.com/thoughtbot/shoulda-matchers/commit/28bd9a10c71af4d541b692d6204163c394ebd33c [#830]: https://github.com/thoughtbot/shoulda-matchers/issues/830 # 3.1.0 ### Bug fixes * Update `validate_numericality_of` so that submatchers are applied lazily instead of immediately. Previously, qualifiers were order-dependent, meaning that if you used `strict` before you used, say, `odd`, then `strict` wouldn't actually apply to `odd`. Now the order that you specify qualifiers doesn't matter. * *Source: [6c67a5e]* * Fix `allow_value` so that it does not raise an AttributeChangedValueError (formerly CouldNotSetAttributeError) when used against an attribute that is an enum in an ActiveRecord model. * *Source: [9e8603e]* * Add a `ignoring_interference_by_writer` qualifier to all matchers, not just `allow_value`. *This is enabled by default, which means that you should never get a CouldNotSetAttributeError again.* (You may get some more information if a test fails, however.) * *Source: [1189934], [5532f43]* * *Fixes: [#786], [#799], [#801], [#804], [#817], [#841], [#849], [#872], [#873], and [#874]* * Fix `validate_numericality_of` so that it does not blow up when used against a virtual attribute defined in an ActiveRecord model (that is, an attribute that is not present in the database but is defined using `attr_accessor`). * *Source: [#822]* * Update `validate_numericality_of` so that it no longer raises an IneffectiveTestError if used against a numeric column. * *Source: [5ed0362]* * *Fixes: [#832]* [6c67a5e]: https://github.com/thoughtbot/shoulda-matchers/commit/6c67a5eb0df265d3a565aa7d1a7e2b645051eb5a [9e8603e]: https://github.com/thoughtbot/shoulda-matchers/commit/9e8603eb745bfa2a5aea6dfef85adf680d447151 [1189934]: https://github.com/thoughtbot/shoulda-matchers/commit/118993480604d39c73687d069f7af3726f3e3f3e [5532f43]: https://github.com/thoughtbot/shoulda-matchers/commit/5532f4359aa332b10de7d46f876eaffd4a95b5b6 [#786]: https://github.com/thoughtbot/shoulda-matchers/issues/786 [#799]: https://github.com/thoughtbot/shoulda-matchers/issues/799 [#801]: https://github.com/thoughtbot/shoulda-matchers/issues/801 [#804]: https://github.com/thoughtbot/shoulda-matchers/issues/804 [#817]: https://github.com/thoughtbot/shoulda-matchers/issues/817 [#841]: https://github.com/thoughtbot/shoulda-matchers/issues/841 [#849]: https://github.com/thoughtbot/shoulda-matchers/issues/849 [#872]: https://github.com/thoughtbot/shoulda-matchers/issues/872 [#873]: https://github.com/thoughtbot/shoulda-matchers/issues/873 [#874]: https://github.com/thoughtbot/shoulda-matchers/issues/874 [#822]: https://github.com/thoughtbot/shoulda-matchers/pull/822 [5ed0362]: https://github.com/thoughtbot/shoulda-matchers/commit/5ed03624197314865ff5463e473e5e84bb91d9ea [#832]: https://github.com/thoughtbot/shoulda-matchers/issues/832 ### Features * Add a new qualifier, `ignoring_case_sensitivity`, to `validate_uniqueness_of`. This provides a way to test uniqueness of an attribute whose case is normalized, either in a custom writer method for that attribute, or in a custom `before_validation` callback. * *Source: [#840]* * *Fixes: [#836]* [#840]: https://github.com/thoughtbot/shoulda-matchers/pull/840 [#836]: https://github.com/thoughtbot/shoulda-matchers/issues/836 ### Improvements * Improve failure messages and descriptions of all matchers across the board so that it is easier to understand what the matcher was doing when it failed. (You'll see a huge difference in the output of the numericality and uniqueness matchers in particular.) * Matchers now raise an error if any attributes that the matcher is attempting to set do not exist on the model. * *Source: [2962112]* * Update `validate_numericality_of` so that it doesn't always run all of the submatchers, but stops on the first one that fails. Since failure messages now contain information as to what value the matcher set on the attribute when it failed, this change guarantees that the correct value will be shown. * *Source: [8e24a6e]* * Continue to detect if attributes change incoming values, but now instead of immediately seeing a CouldNotSetAttributeError, you will only be informed about it if the test you've written fails. * *Source: [1189934]* * Add an additional check to `define_enum_for` to ensure that the column that underlies the enum attribute you're testing is an integer column. * *Source: [68dd70a]* * Add a test for `validate_numericality_of` so that it officially supports money columns. * *Source: [a559713]* * *Refs: [#841]* [2962112]: https://github.com/thoughtbot/shoulda-matchers/commit/296211211497e624dde87adae68b385ad4cdae3a [8e24a6e]: https://github.com/thoughtbot/shoulda-matchers/commit/8e24a6e9b2b147f2c51fb03aa02543f213acab34 [68dd70a]: https://github.com/thoughtbot/shoulda-matchers/commit/68dd70a23d8997a490683adcd2108a4a5cadf8ba [a559713]: https://github.com/thoughtbot/shoulda-matchers/commit/a559713f96303414551c0bc1767fb11eb19bcc5d # 3.0.1 ### Bug fixes * Fix `validate_inclusion_of` + `in_array` when used against a date or datetime column/attribute so that it does not raise a CouldNotSetAttributeError. ([#783], [8fa97b4]) * Fix `validate_numericality_of` when used against a numeric column so that it no longer raises a CouldNotSetAttributeError if the matcher has been qualified in any way (`only_integer`, `greater_than`, `odd`, etc.). ([#784], [#812]) ### Improvements * `validate_uniqueness_of` now raises a NonCaseSwappableValueError if the value the matcher is using to test uniqueness cannot be case-swapped -- in other words, if it doesn't contain any alpha characters. When this is the case, the matcher cannot work effectively. ([#789], [ada9bd3]) [#783]: https://github.com/thoughtbot/shoulda-matchers/pull/783 [8fa97b4]: https://github.com/thoughtbot/shoulda-matchers/commit/8fa97b4ff33b57ce16dfb96be1ec892502f2aa9e [#784]: https://github.com/thoughtbot/shoulda-matchers/pull/784 [#789]: https://github.com/thoughtbot/shoulda-matchers/pull/789 [ada9bd3]: https://github.com/thoughtbot/shoulda-matchers/commit/ada9bd3a1b9f2bb9fa74d0dfe1f8f7080314298c [#812]: https://github.com/thoughtbot/shoulda-matchers/pull/812 # 3.0.0 ### Backward-incompatible changes * We've dropped support for Rails 3.x, Ruby 1.9.2, and Ruby 1.9.3, and RSpec 2. All of these have been end-of-lifed. ([a4045a1], [b7fe87a], [32c0e62]) * The gem no longer detects the test framework you're using or mixes itself into that framework automatically. [History][no-auto-integration-1] has [shown][no-auto-integration-2] that performing any kind of detection is prone to bugs and more complicated than it should be. Here are the updated instructions: * You no longer need to say `require: false` in your Gemfile; you can include the gem as normal. * You'll need to add the following somewhere in your `rails_helper` (for RSpec) or `test_helper` (for Minitest / Test::Unit): ``` ruby Shoulda::Matchers.configure do |config| config.integrate do |with| # Choose a test framework: with.test_framework :rspec with.test_framework :minitest with.test_framework :minitest_4 with.test_framework :test_unit # Choose one or more libraries: with.library :active_record with.library :active_model with.library :action_controller # Or, choose the following (which implies all of the above): with.library :rails end end ``` ([1900071]) * Previously, under RSpec, all of the matchers were mixed into all of the example groups. This created a problem because some gems, such as [active_model_serializers-matchers], provide matchers that share the same name as some of our own matchers. Now, matchers are only mixed into whichever example group they belong to: * ActiveModel and ActiveRecord matchers are available only in model example groups. * ActionController matchers are available only in controller example groups. * The `route` matcher is available only in routing example groups. ([af98a23], [8cf449b]) * There are two changes to `allow_value`: * The negative form of `allow_value` has been changed so that instead of asserting that any of the given values is an invalid value (allowing good values to pass through), assert that *all* values are invalid values (allowing good values not to pass through). This means that this test which formerly passed will now fail: ``` ruby expect(record).not_to allow_value('good value', *bad_values) ``` ([19ce8a6]) * `allow_value` now raises a CouldNotSetAttributeError if in setting the attribute, the value of the attribute from reading the attribute back is different from the one used to set it. This would happen if the writer method for that attribute has custom logic to ignore certain incoming values or change them in any way. Here are three examples we've seen: * You're attempting to assert that an attribute should not allow nil, yet the attribute's writer method contains a conditional to do nothing if the attribute is set to nil: ``` ruby class Foo include ActiveModel::Model attr_reader :bar def bar=(value) return if value.nil? @bar = value end end describe Foo do it do foo = Foo.new foo.bar = "baz" # This will raise a CouldNotSetAttributeError since `foo.bar` is now "123" expect(foo).not_to allow_value(nil).for(:bar) end end ``` * You're attempting to assert that an numeric attribute should not allow a string that contains non-numeric characters, yet the writer method for that attribute strips out non-numeric characters: ``` ruby class Foo include ActiveModel::Model attr_reader :bar def bar=(value) @bar = value.gsub(/\D+/, '') end end describe Foo do it do foo = Foo.new # This will raise a CouldNotSetAttributeError since `foo.bar` is now "123" expect(foo).not_to allow_value("abc123").for(:bar) end end ``` * You're passing a value to `allow_value` that the model typecasts into another value: ``` ruby describe Foo do # Assume that `attr` is a string # This will raise a CouldNotSetAttributeError since `attr` typecasts `[]` to `"[]"` it { should_not allow_value([]).for(:attr) } end ``` With all of these failing examples, why are we making this change? We want to guard you (as the developer) from writing a test that you think acts one way but actually acts a different way, as this could lead to a confusing false positive or negative. If you understand the problem and wish to override this behavior so that you do not get a CouldNotSetAttributeError, you can add the `ignoring_interference_by_writer` qualifier like so. Note that this will not always cause the test to pass. ``` ruby it { should_not allow_value([]).for(:attr).ignoring_interference_by_writer } ``` ([9d9dc4e]) * `validate_uniqueness_of` is now properly case-sensitive by default, to match the default behavior of the validation itself. This is a backward-incompatible change because this test which incorrectly passed before will now fail: ``` ruby class Product < ActiveRecord::Base validates_uniqueness_of :name, case_sensitive: false end describe Product do it { is_expected.to validate_uniqueness_of(:name) } end ``` ([57a1922]) * `ensure_inclusion_of`, `ensure_exclusion_of`, and `ensure_length_of` have been removed in favor of their `validate_*` counterparts. ([55c8d09]) * `set_the_flash` and `set_session` have been changed to more closely align with each other: * `set_the_flash` has been removed in favor of `set_flash`. ([801f2c7]) * `set_session('foo')` is no longer valid syntax, please use `set_session['foo']` instead. ([535fe05]) * `set_session['key'].to(nil)` will no longer pass when the key in question has not been set yet. ([535fe05]) * Change `set_flash` so that `set_flash[:foo].now` is no longer valid syntax. You'll want to use `set_flash.now[:foo]` instead. This was changed in order to more closely align with how `flash.now` works when used in a controller. ([#755], [#752]) * Change behavior of `validate_uniqueness_of` when the matcher is not qualified with any scopes, but your validation is. Previously the following test would pass when it now fails: ``` ruby class Post < ActiveRecord::Base validate :slug, uniqueness: { scope: :user_id } end describe Post do it { should validate_uniqueness_of(:slug) } end ``` ([6ac7b81]) [active_model_serializers-matchers]: https://github.com/adambarber/active_model_serializers-matchers [no-auto-integration-1]: https://github.com/freerange/mocha/commit/049080c673ee3f76e76adc1e1a6122c7869f1648 [no-auto-integration-2]: https://github.com/rr/rr/issues/29 [1900071]: https://github.com/thoughtbot/shoulda-matchers/commit/190007155e0676aae84d08d8ed8eed3beebc3a06 [b7fe87a]: https://github.com/thoughtbot/shoulda-matchers/commit/b7fe87ae915f6b1f99d64e847fea536ad0f78024 [a4045a1]: https://github.com/thoughtbot/shoulda-matchers/commit/a4045a1f9bc454e618a7c55960942eb030f02fdd [57a1922]: https://github.com/thoughtbot/shoulda-matchers/commit/57a19228b6a85f12ba7a79a26dae5869c1499c6d [19ce8a6]: https://github.com/thoughtbot/shoulda-matchers/commit/19c38a642a2ae1316ef12540a0185cd026901e74 [eaaa2d8]: https://github.com/thoughtbot/shoulda-matchers/commit/eaaa2d83e5cd31a3ca0a1aaa65441ea1a4fffa49 [55c8d09]: https://github.com/thoughtbot/shoulda-matchers/commit/55c8d09bf2af886540924efa83c3b518d926a770 [801f2c7]: https://github.com/thoughtbot/shoulda-matchers/commit/801f2c7c1eab3b2053244485c9800f850959cfef [535fe05]: https://github.com/thoughtbot/shoulda-matchers/commit/535fe05be8686fdafd8b22f2ed5c4192bd565d50 [6ac7b81]: https://github.com/thoughtbot/shoulda-matchers/commit/6ac7b8158cfba3b518eb3da3c24345e4473b416f [#755]: https://github.com/thoughtbot/shoulda-matchers/pull/755 [#752]: https://github.com/thoughtbot/shoulda-matchers/pull/752 [9d9dc4e]: https://github.com/thoughtbot/shoulda-matchers/commit/9d9dc4e6b9cf2c19df66a1b4ba432ad8d3e5dded [32c0e62]: https://github.com/thoughtbot/shoulda-matchers/commit/32c0e62596b87e37a301f87bbe21cfcc77750552 [af98a23]: https://github.com/thoughtbot/shoulda-matchers/commit/af98a23091551fb40aded5a8d4f9e5be926f53a9 [8cf449b]: https://github.com/thoughtbot/shoulda-matchers/commit/8cf449b4ca37d0d7446d2cabbfa5a1582358256d ### Bug fixes * So far the tests for the gem have been running against only SQLite. Now they run against PostgreSQL, too. As a result we were able to fix some Postgres-related bugs, specifically around `validate_uniqueness_of`: * When scoped to a UUID column that ends in an "f", the matcher is able to generate a proper "next" value without erroring. ([#402], [#587], [#662]) * Support scopes that are PostgreSQL array columns. Please note that this is only supported for Rails 4.2 and greater, as versions before this cannot handle array columns correctly, particularly in conjunction with the uniqueness validator. ([#554]) * Fix so that when scoped to a text column and the scope is set to nil before running it through the matcher, the matcher does not fail. ([#521], [#607]) * Fix `define_enum_for` so that it actually tests that the attribute is present in the list of defined enums, as you could fool it by merely defining a class method that was the pluralized version of the attribute name. In the same vein, passing a pluralized version of the attribute name to `define_enum_for` would erroneously pass, and now it fails. ([#641]) * Fix `permit` so that it does not break the functionality of ActionController::Parameters#require. ([#648], [#675]) * Fix `validate_uniqueness_of` + `scoped_to` so that it does not raise an error if a record exists where the scoped attribute is nil. ([#677]) * Fix `route` matcher so if your route includes a default `format`, you can specify this as a symbol or string. ([#693]) * Fix `validate_uniqueness_of` so that it allows you to test against scoped attributes that are boolean columns. ([#457], [#694]) * Fix failure message for `validate_numericality_of` as it sometimes didn't provide the reason for failure. ([#699]) * Fix `shoulda/matchers/independent` so that it can be required independently, without having to require all of the gem. ([#746], [e0a0200]) ### Features * Add `on` qualifier to `permit`. This allows you to make an assertion that a restriction was placed on a slice of the `params` hash and not the entire `params` hash. Although we don't require you to use this qualifier, we do recommend it, as it's a more precise check. ([#675]) * Add `strict` qualifier to `validate_numericality_of`. ([#620]) * Add `on` qualifier to `validate_numericality_of`. ([9748869]; h/t [#356], [#358]) * Add `join_table` qualifier to `have_and_belong_to_many`. ([#556]) * `allow_values` is now an alias for `allow_value`. This makes more sense when checking against multiple values: ``` ruby it { should allow_values('this', 'and', 'that') } ``` ([#692]) [9748869]: https://github.com/thoughtbot/shoulda-matchers/commit/97488690910520ed8e1f2e164b1982eff5ef1f19 [#402]: https://github.com/thoughtbot/shoulda-matchers/pull/402 [#587]: https://github.com/thoughtbot/shoulda-matchers/pull/587 [#662]: https://github.com/thoughtbot/shoulda-matchers/pull/662 [#554]: https://github.com/thoughtbot/shoulda-matchers/pull/554 [#641]: https://github.com/thoughtbot/shoulda-matchers/pull/641 [#521]: https://github.com/thoughtbot/shoulda-matchers/pull/521 [#607]: https://github.com/thoughtbot/shoulda-matchers/pull/607 [#648]: https://github.com/thoughtbot/shoulda-matchers/pull/648 [#675]: https://github.com/thoughtbot/shoulda-matchers/pull/675 [#677]: https://github.com/thoughtbot/shoulda-matchers/pull/677 [#620]: https://github.com/thoughtbot/shoulda-matchers/pull/620 [#693]: https://github.com/thoughtbot/shoulda-matchers/pull/693 [#356]: https://github.com/thoughtbot/shoulda-matchers/pull/356 [#358]: https://github.com/thoughtbot/shoulda-matchers/pull/358 [#556]: https://github.com/thoughtbot/shoulda-matchers/pull/556 [#457]: https://github.com/thoughtbot/shoulda-matchers/pull/457 [#694]: https://github.com/thoughtbot/shoulda-matchers/pull/694 [#692]: https://github.com/thoughtbot/shoulda-matchers/pull/692 [#699]: https://github.com/thoughtbot/shoulda-matchers/pull/699 [#746]: https://github.com/thoughtbot/shoulda-matchers/pull/746
Update ruby-shoulda-matchers to 2.8.0. pkgsrc change: allow build on Ruby 2.2. # 2.8.0 ### Deprecations * `ensure_length_of` has been renamed to `validate_length_of`. `ensure_length_of` is deprecated and will be removed in 3.0.0. * `set_the_flash` has been renamed to `set_flash`. `set_the_flash` is deprecated and will be removed in 3.0.0. * `set_session(:foo)` is deprecated in favor of `set_session[:foo]`. `set_session(:foo)` will be invalid syntax in 3.0.0. * Using `should set_session[:key].to(nil)` to assert that that a value has not been set is deprecated. Please use `should_not set_session[:key]` instead. In 3.0.0, `should set_session[:key].to(nil)` will only pass if the value is truly nil. ### Bug fixes * Fix `delegate_method` so that it works again with shoulda-context. ([#591]) * Fix `validate_uniqueness_of` when used with `scoped_to` so that when one of the scope attributes is a polymorphic `*_type` attribute and the model has another validation on the same attribute, the matcher does not fail with an error. ([#592]) * Fix `has_many` used with `through` so that when the association does not exist, and the matcher fails, it does not raise an error when producing the failure message. ([#588]) * Fix `have_and_belong_to_many` used with `join_table` so that it does not fail when `foreign_key` and/or `association_foreign_key` was specified on the association as a symbol instead of a string. ([#584]) * Fix `allow_value` when an i18n translation key is passed to `with_message` and the `:against` option is used to specify an alternate attribute. A bug here also happened to affect `validate_confirmation_of` when an i18n translation key is passed to `with_message`. ([#593]) * Fix `class_name` qualifier for association matchers so that if the model being referenced is namespaced, the matcher will correctly resolve the class before checking it against the association's `class_name`. ([#537]) * Fix `validate_inclusion_of` used with `with_message` so that it fails if given a message that does not match the message on the validation. ([#598]) * Fix `route` matcher so that when controller and action are specified in hash notation (e.g. `posts#show`), route parameters such as `id` do not need to be specified as a string but may be specified as a number as well. ([#602]) * Fix `allow_value`, `validate_numericality_of` and `validate_inclusion_of` so that they handle RangeErrors emitted from ActiveRecord 4.2. These exceptions arise whenever we attempt to set an attribute using a value that lies outside the range of the column (assuming the column is an integer). RangeError is now treated specially, failing the test instead of bubbling up as an error. ([#634], [#637], [#642]) ### Features * Add ability to test `:primary_key` option on associations. ([#597]) * Add `allow_blank` qualifier to `validate_uniqueness_of` to complement the `allow_blank` option. ([#543]) * Change `set_session` so that #[] and #to qualifiers are optional, similar to `set_flash`. That is, you can now say `should set_session` to assert that any flash value has been set, or `should set_session.to('value')` to assert that any value in the session is 'value'. * Change `set_session` so that its #to qualifier supports regexps, similar to `set_flash`. * Add `with_prefix` qualifier to `delegate_method` to correspond to the `prefix` option for Rails's `delegate` macro. ([#622]) * Add support for Rails 4.2, especially fixing `serialize` matcher to remove warning about `serialized_attributes` being deprecated. ([#627]) * Update `dependent` qualifier on association matchers to support `:destroy`, `:delete`, `:nullify`, `:restrict`, `:restrict_with_exception`, and `:restrict_with_error`. You can also pass `true` or `false` to assert that the association has (or has not) been declared with *any* dependent option. ([#631]) ### Improvements * Tweak `allow_value` failure message so that it reads a bit nicer when listing existing errors. [#591]: https://github.com/thoughtbot/shoulda-matchers/pull/591 [#592]: https://github.com/thoughtbot/shoulda-matchers/pull/592 [#588]: https://github.com/thoughtbot/shoulda-matchers/pull/588 [#584]: https://github.com/thoughtbot/shoulda-matchers/pull/584 [#593]: https://github.com/thoughtbot/shoulda-matchers/pull/593 [#597]: https://github.com/thoughtbot/shoulda-matchers/pull/597 [#537]: https://github.com/thoughtbot/shoulda-matchers/pull/537 [#598]: https://github.com/thoughtbot/shoulda-matchers/pull/598 [#602]: https://github.com/thoughtbot/shoulda-matchers/pull/602 [#543]: https://github.com/thoughtbot/shoulda-matchers/pull/543 [#622]: https://github.com/thoughtbot/shoulda-matchers/pull/622 [#627]: https://github.com/thoughtbot/shoulda-matchers/pull/627 [#631]: https://github.com/thoughtbot/shoulda-matchers/pull/631 [#634]: https://github.com/thoughtbot/shoulda-matchers/pull/634 [#637]: https://github.com/thoughtbot/shoulda-matchers/pull/637 [#642]: https://github.com/thoughtbot/shoulda-matchers/pull/642 # 2.7.0 ### Deprecations * `ensure_inclusion_of` has been renamed to `validate_inclusion_of`. `ensure_inclusion_of` is deprecated and will be removed in 3.0.0. * `ensure_exclusion_of` has been renamed to `validate_exclusion_of`. `ensure_exclusion_of` is deprecated and will be removed in 3.0.0. ### Bug fixes * Fix `delegate_method` so that it does not raise an error if the method that returns the delegate object is private. * Warn when `ensure_inclusion_of` is chained with `.in_array([false, true])` as well as with `.in_array([true, false])`. * Fix `set_session` so that the `to` qualifier if given nil checks that the session variable in question was set to nil (previously this actually did nothing). * Fix `filter_param` so that it works when `config.filter_parameters` contains regexes. * Fix `delegate_method` so that it can be required independent of Active Support. * Fix `validate_uniqueness_of`. When used against an unpersisted record whose model contained a non-nullable column other than the one being validated, the matcher would break. Even if the test set that column to a value beforehand, the record had to be persisted in order for the matcher to work. Now this is no longer the case and the record can remain unpersisted. * Fix `validate_absence_of`: it required that a string be passed as the attribute name rather than a symbol (which is the usual and documented usage). ### Improvements * `have_and_belongs_to_many` now checks to make sure that the join table contains the correct columns for the left- and right-hand side of the association. * Reword failure message for `delegate_method` so that it's a little more helpful. ### Features * Add new matcher `define_enum_for` to test usage of the `enum` macro introduced in Rails 4.1.
Updated to 2.6.2. ruby18 isn't supported. From NEWS.md: ### Bug fixes * If you have a Rails >= 4.1 project and you are running tests using Spring, matchers that depend on assertions within Rails' testing layer (e.g. `render_template` and `route`) will no longer fail. * Fix `permit` so that it can be used more than once in the same test. * Revert change to `validate_uniqueness_of` made in 2.6.0 so that it no longer provides default values for non-primary, non-nullable columns. This approach was causing test failures because it makes the assumption that none of these columns allow only specific values, which is not true. If you get an error from `validate_uniqueness_of`, your best bet continues to be creating a record manually and calling `validate_uniqueness_of` on that instead. ### Other changes * The majority of warnings that the gem produced have been removed. The gem still produces warnings under Ruby 1.9.3; we will address this in a future release.
Removing .ri entries from PLIST. NFI why this works with/without the entries on my machine. Seems no other ruby package has them. Bump PKGREVISION.
Import ruby200-shoulda-matchers-2.6.1 as devel/ruby-shoulda-matchers. shoulda-matchers provides Test::Unit- and RSpec-compatible one-liners that test common Rails functionality. These tests would otherwise be much longer, more complex, and error-prone.