Skip to content

Releases: thoughtbot/shoulda-matchers

v5.0.0.rc1

04 Jun 21:13
b3c7923
Compare
Choose a tag to compare
v5.0.0.rc1 Pre-release
Pre-release

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)

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)

v4.5.1

22 Jan 23:22
949bfa3
Compare
Choose a tag to compare

Bug fixes

  • Update belongs_to to work with composite primary keys. (#1396)

v4.5.0

12 Jan 00:18
5d48d37
Compare
Choose a tag to compare

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)

v4.4.0

26 Aug 05:53
Compare
Choose a tag to compare

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)

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)

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)

v4.3.0

18 Feb 07:33
321b87e
Compare
Choose a tag to compare

Features

  • Add have_rich_text matcher for ActionText (#1263)

Improvements

  • Use range on validate_exclusion_of#in_range documentation (#1273)

Bug fixes

  • Fix missing attribute:: scope 1 intermittent test: (#1274)

v4.2.0

09 Jan 07:34
068b0e7
Compare
Choose a tag to compare

Features

  • Add support for optional: false in belongs_to associations. (#1237)
  • Add support for associations with inverse_of: false and non-standard foreign key (#1106)

Bug fixes

  • Fix typos in documentation of allow_values (#1241)
  • Fix appraisal command in CONTRIBUTING.md file (#1253)

Improvements

  • Remove minitest-reporters dependency ([#1251])
  • Development dependency updates

v4.1.1

16 Jul 02:35
Compare
Choose a tag to compare

Bug fixes

  • Patch some backward-incompatible changes to validate_presence_of that were
    made in the last version. As of 4.1.0 the presence matcher now checks to
    ensure that empty string will cause the record to be invalid (in addition to
    nil, which it was already checking against). However, this check was being
    performed even if the attribute or column the presence matcher is being run
    against didn't support being set to an empty string. This releases fixes this.
    (#1222, #1224, #1231)

v4.1.0

16 Jul 02:35
Compare
Choose a tag to compare

Bug fixes

  • Fix validate_uniqueness_of so that it works when a scope is defined as a
    string instead of a symbol on the model. (#1176)
  • Fix have_db_index so that it can be used against multiple models that are
    connected to different databases. (#1200)

Features

  • Add support for Rails 6. No new Rails 6 features are supported, but only
    existing features that broke with the upgrade. (#1193)
  • Add support for expression indexes (Rails 5, Postgres only) to
    have_db_index. (#1211)
  • Add allow_nil to the validate_presence_of matcher. (834d8d0, #1100)

Improvements

  • Update validate_presence_of so that if it is being used against an
    association which is required: true or optional: false, or it is not
    configured as such but ActiveRecord defaults belong_to associations to
    optional: false, and the matcher fails, the developer is reminded in the
    failure message that the belong_to matcher can be used instead. (#1214,
    8697b01)
  • Update define_enum_for so that it produces a more helpful message on
    failure. (#1216)

v4.0.1

26 Feb 05:15
Compare
Choose a tag to compare

Fix gemspec so that setup script isn't installed globally when gem is installed.

v4.0.0 (yanked)

22 Feb 07:17
Compare
Choose a tag to compare
  • Rails 5.x support
  • Ruby 2.4+ support
  • Improve negative versions of validation matchers
  • Drop support for Ruby 2.0 and 2.1
  • Drop support Rails 4.0 and 4.1