Simple one-liner tests for common Rails functionality
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)
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)
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 autoload
s. (#1320)
optional: false
in belongs_to
associations. (#1237)inverse_of: false
and non-standard foreign key (#1106)allow_values
(#1241)minitest-reporters
dependency ([#1251])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)validate_uniqueness_of
so that it works when a scope is defined as a
string instead of a symbol on the model. (#1176)have_db_index
so that it can be used against multiple models that are
connected to different databases. (#1200)have_db_index
. (#1211)allow_nil
to the validate_presence_of
matcher. (834d8d0, #1100)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)define_enum_for
so that it produces a more helpful message on
failure. (#1216)Fix gemspec so that setup
script isn't installed globally when gem is installed.
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.
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.