class RuboCop::Cop::Minitest::TestMethodName

This cop enforces that test method names start with `test_` prefix. It aims to prevent tests that aren't executed by forgetting to start test method name with `test_`.

@example

# bad
class FooTest < Minitest::Test
  def does_something
    assert_equal 42, do_something
  end
end

# good
class FooTest < Minitest::Test
  def test_does_something
    assert_equal 42, do_something
  end
end

# good
class FooTest < Minitest::Test
  def helper_method(argument)
  end
end

Constants

MSG

Public Instance Methods

on_class(class_node) click to toggle source
# File lib/rubocop/cop/minitest/test_method_name.rb, line 37
def on_class(class_node)
  return unless test_class?(class_node)

  class_elements(class_node).each do |node|
    next unless offense?(node)

    test_method_name = node.loc.name

    add_offense(test_method_name) do |corrector|
      corrector.replace(test_method_name, "test_#{node.method_name}")
    end
  end
end

Private Instance Methods

class_elements(class_node) click to toggle source
# File lib/rubocop/cop/minitest/test_method_name.rb, line 53
def class_elements(class_node)
  class_def = class_node.body
  return [] unless class_def

  if class_def.def_type?
    [class_def]
  else
    class_def.each_child_node(:def).to_a
  end
end
offense?(node) click to toggle source
# File lib/rubocop/cop/minitest/test_method_name.rb, line 64
def offense?(node)
  return false if assertions(node).none?

  public?(node) && node.arguments.empty? && !test_method_name?(node) && !lifecycle_hook_method?(node)
end
public?(node) click to toggle source
# File lib/rubocop/cop/minitest/test_method_name.rb, line 70
def public?(node)
  !non_public?(node)
end
test_method_name?(node) click to toggle source
# File lib/rubocop/cop/minitest/test_method_name.rb, line 74
def test_method_name?(node)
  node.method_name.to_s.start_with?('test_')
end