class RuboCop::Cop::RSpec::VariableDefinition


let(‘user_name’) { ‘Adam’ }
subject(‘user’) { create_user }
# good
let(:user_name) { ‘Adam’ }
subject(:user) { create_user }
# bad
@example EnforcedStyle: strings
let(:user_name) { ‘Adam’ }
subject(:user) { create_user }
# good
let(‘user_name’) { ‘Adam’ }
subject(‘user’) { create_user }
# bad
@example EnforcedStyle: symbols (default)
Checks that memoized helpers names are symbols or strings.

def correct_variable(variable)

def correct_variable(variable)
  case variable.type
  when :dsym
    variable.source[1..]
  when :sym
    variable.value.to_s.inspect
  else
    variable.value.to_sym.inspect
  end
end

def on_send(node)

def on_send(node)
  return unless inside_example_group?(node)
  variable_definition?(node) do |variable|
    next unless style_offense?(variable)
    add_offense(
      variable,
      message: format(MSG, style: style)
    ) do |corrector|
      corrector.replace(variable, correct_variable(variable))
    end
  end
end

def string?(node)

def string?(node)
  node.str_type?
end

def style_offense?(variable)

def style_offense?(variable)
  (style == :symbols && string?(variable)) ||
    (style == :strings && symbol?(variable))
end

def symbol?(node)

def symbol?(node)
  node.type?(:sym, :dsym)
end