Shoulda Matchers Versions Save

Simple one-liner tests for common Rails functionality

v4.4.0

3 years ago

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

4 years ago

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

4 years ago

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

4 years ago

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

4 years ago

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

5 years ago

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

v4.0.0

5 years ago
  • 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

v4.0.0.rc1

5 years ago

Adds support for Ruby 2.4 and 2.5 and Rails 5.x. Drops support for Ruby 2.0 and 2.1 as well as Rails 4.0 and 4.1.

v3.1.2

6 years ago

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]