rubocop-factory_bot icon indicating copy to clipboard operation
rubocop-factory_bot copied to clipboard

False positives on `FactoryBot/AssociationStyle` cop

Open ydakuka opened this issue 2 years ago • 1 comments

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

ydakuka avatar Oct 02 '23 13:10 ydakuka

Thanks for reporting! There are two problems at a gpance.

  1. 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?

  2. AttributeDefinedStatically seems to be unaware of ‘association’ for some reason. 2.1 it also should ignore definitions with multiple args

pirj avatar Oct 02 '23 19:10 pirj