Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Enabled |
Yes |
Yes |
1.28 |
2.0 |
Always declare attribute values as blocks.
# bad
kind [:active, :rejected].sample
# good
kind { [:active, :rejected].sample }
# bad
closed_at 1.day.from_now
# good
closed_at { 1.day.from_now }
# bad
count 1
# good
count { 1 }
Name | Default value | Configurable values |
---|---|---|
Include |
|
Array |
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Yes |
2.14 |
- |
Use a consistent style for parentheses in factory bot calls.
# bad
create :user
build(:user)
create(:login)
create :login
# good
create(:user)
create(:user)
create(:login)
build(:login)
Name | Default value | Configurable values |
---|---|---|
EnforcedStyle |
|
|
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Enabled |
Yes |
Yes |
1.25 |
2.0 |
Checks for create_list usage.
This cop can be configured using the EnforcedStyle
option
# bad
3.times { create :user }
# good
create_list :user, 3
# bad
3.times { create :user, age: 18 }
# good - index is used to alter the created models attributes
3.times { |n| create :user, age: n }
# good - contains a method call, may return different values
3.times { create :user, age: rand }
Name | Default value | Configurable values |
---|---|---|
Include |
|
Array |
EnforcedStyle |
|
|
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Enabled |
Yes |
Yes |
1.37 |
2.0 |
Use string value when setting the class attribute explicitly.
This cop would promote faster tests by lazy-loading of application files. Also, this could help you suppress potential bugs in combination with external libraries by avoiding a preload of application files from the factory files.
Name | Default value | Configurable values |
---|---|---|
Include |
|
Array |
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Yes |
2.16 |
- |
Checks for name style for argument of FactoryBot::Syntax::Methods.
# bad
create('user')
build "user", username: "NAME"
# good
create(:user)
build :user, username: "NAME"
Enabled by default | Safe | Supports autocorrection | Version Added | Version Changed |
---|---|---|---|---|
Pending |
Yes |
Yes (Unsafe) |
2.7 |
- |
Use shorthands from FactoryBot::Syntax::Methods
in your specs.
The autocorrection is marked as unsafe because the cop
cannot verify whether you already include
FactoryBot::Syntax::Methods
in your test suite.
If you’re using Rails, add the following configuration to
spec/support/factory_bot.rb
and be sure to require that file in
rails_helper.rb
:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
If you’re not using Rails:
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
config.before(:suite) do
FactoryBot.find_definitions
end
end
# bad
FactoryBot.create(:bar)
FactoryBot.build(:bar)
FactoryBot.attributes_for(:bar)
# good
create(:bar)
build(:bar)
attributes_for(:bar)