rubocop-factory_bot
rubocop-factory_bot copied to clipboard
False positives on `FactoryBot/AssociationStyle` cop
Expected behavior
FactoryBot.define do
factory :user do
profile
end
end
Actual behavior
ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop -A spec/factories/users.rb
before
FactoryBot.define do
factory :user do
association :profile, strategy: :create
end
end
after
FactoryBot.define do
factory :user do
profile { { strategy: :create } }
end
end
RuboCop
ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop spec/factories/users.rb
Inspecting 1 file
C
Offenses:
spec/factories/users.rb:6:5: C: [Correctable] FactoryBot/AssociationStyle: Use implicit style to define associations.
association :profile, strategy: :create
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
spec/factories/users.rb:6:5: C: [Correctable] FactoryBot/AttributeDefinedStatically: Use a block to declare attribute values.
association :profile, strategy: :create
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1 file inspected, 2 offenses detected, 2 offenses autocorrectable
Rubocop version
ydakuka@yauhenid:~/Work/project$ bin/rails_docker rubocop -V
1.56.4 (using Parser 3.2.2.3, rubocop-ast 1.29.0, running on ruby 2.7.8) [x86_64-linux]
- rubocop-capybara 2.19.0
- rubocop-factory_bot 2.24.0
- rubocop-performance 1.19.1
- rubocop-rails 2.21.1
- rubocop-rake 0.6.0
- rubocop-rspec 2.24.0
- rubocop-thread_safety 0.5.1
Thanks for reporting! There are two problems at a gpance.
-
According to https://github.com/rubocop/rubocop-factory_bot/blob/0da664d97a8632769451a1633eafd852db5cf2a4/spec/rubocop/cop/factory_bot/association_style_spec.rb#L168, it’s just the build strategy that won’t work. But how would others work?
-
AttributeDefinedStatically seems to be unaware of ‘association’ for some reason. 2.1 it also should ignore definitions with multiple args