feat: support some "predicate" assertions in RSpec/Rails/MinitestAssertions
#1789
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This implements some support for
assert_predicate
and co, focused on transforming usage with predicate methods (e.g.valid?
) into theirbe_
equivalents.Predicates that are not symbols or that don't end with
?
are ignored - a follow up PR can expand support for other uses ofassert_predicate
.I think technically this makes the autofix unsafe because
assert_predicate
usessend
whereas RSpec usessend_public
so you could assert a private method which would break when fixed, but I feel like that would generally be considered bad practice anyway and an easy mistake so arguably this could be useful?Relates to rubocop/rubocop-rspec_rails#7
Before submitting the PR make sure the following are checked:
master
(if not - rebase it).CHANGELOG.md
if the new code introduces user-observable changes.bundle exec rake
) passes (be sure to run this locally, since it may produce updated documentation that you will need to commit).If you have created a new cop:
Added the new cop toconfig/default.yml
.The cop is configured asEnabled: pending
inconfig/default.yml
.The cop is configured asEnabled: true
in.rubocop.yml
.The cop documents examples of good and bad code.The tests assert both that bad code is reported and that good code is not reported.SetVersionAdded: "<<next>>"
indefault/config.yml
.If you have modified an existing cop's configuration options:
SetVersionChanged: "<<next>>"
inconfig/default.yml
.