Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

False positive on FactoryBot/AttributeDefinedStatically cop #79

Open
ydakuka opened this issue Oct 2, 2023 · 1 comment
Open

False positive on FactoryBot/AttributeDefinedStatically cop #79

ydakuka opened this issue Oct 2, 2023 · 1 comment

Comments

@ydakuka
Copy link

ydakuka commented Oct 2, 2023

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
@pirj
Copy link
Member

pirj commented Oct 2, 2023

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

  1. According to

    context 'with `strategy: :build` option' do
    , 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants