Class: RuboCop::Cop::Momocop::FactoryBotConsistentFileName

Inherits:
Base
  • Object
show all
Includes:
Momocop::Helpers::FactoryBotHelper, RangeHelp
Defined in:
lib/rubocop/cop/momocop/factory_bot_consistent_file_name.rb

Overview

Ensures that FactoryBot factory names match their filenames.

Examples:

# bad
# in a file named user.rb
FactoryBot.define do
  factory :admin_user do
  end
end

# good
# in a file named admin_user.rb
FactoryBot.define do
  factory :admin_user do
  end
end

Constant Summary collapse

MSG =
'Factory name should match the file name.'
RESTRICT_ON_SEND =
%i[factory].freeze

Constants included from Momocop::Helpers::FactoryBotHelper

Momocop::Helpers::FactoryBotHelper::RUBOCOP_HELPER_METHODS

Instance Method Summary collapse

Instance Method Details

#on_send(node) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rubocop/cop/momocop/factory_bot_consistent_file_name.rb', line 34

def on_send(node)
  factory_name = factory_bot_definition(node)
  return unless factory_name

  return unless inside_factory_bot_define?(node)

  expected_file_name = "#{factory_name}.rb"
  actual_file_name = File.basename(processed_source.file_path)
  return unless actual_file_name != expected_file_name

  add_offense(node.source_range, message: MSG)
end