rubocop-rspec
rubocop-rspec copied to clipboard
Cop idea: Model Validations
Reference: https://rspec.rubystyle.guide/#model-validations
Describe the solution you'd like
RSpec.describe '#title' do
# bad
it 'is required' do
article.title = nil
expect(article).not_to be_valid
end
# preferred
it 'is required' do
article.title = nil
article.valid?
expect(article.errors[:title].size).to eq(1)
end
end
Rubocop
ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop -V
1.56.2 (using Parser 3.2.2.3, rubocop-ast 1.29.0, running on ruby 2.7.8) [x86_64-linux]
- rubocop-capybara 2.18.0
- rubocop-factory_bot 2.23.1
- rubocop-performance 1.19.0
- rubocop-rails 2.21.0
- rubocop-rake 0.6.0
- rubocop-rspec 2.24.0
- rubocop-thread_safety 0.5.1
Now when I look at this guideline, I’d write the good example as something like
expect(article.errors).to have_key(:title)
Or would outright recommend using shoulda-matchers.