Class: RuboCop::Cop::RequireRequiredForInteractorSupport

Inherits:
RuboCop::Cop
  • Object
show all
Defined in:
lib/interactor_support/rubocop/cop/require_required_for_interactor_support.rb

Constant Summary collapse

MSG =
'Classes including `InteractorSupport` or `InteractorSupport::Validations` must invoke `required`.'

Instance Method Summary collapse

Instance Method Details

#includes_support?(node) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
# File 'lib/interactor_support/rubocop/cop/require_required_for_interactor_support.rb', line 12

def includes_support?(node)
  node.to_s =~ /InteractorSupport/ && (
    node.to_s =~ /\(const nil :InteractorSupport\) :Validations\)/ ||
    (node.to_s =~ /\(const nil :InteractorSupport\)/ && node.to_s !~ /:RequestObject/)
  )
end

#on_class(node) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/interactor_support/rubocop/cop/require_required_for_interactor_support.rb', line 19

def on_class(node)
  return unless includes_support?(node)

  required_called = calls_required?(node.body) || node.body&.children&.any? do |child|
    calls_required?(child)
  end
  add_offense(node, message: MSG) unless required_called
end