Class: RuboCop::Cop::Alchemrest::DefineRequestUsingWithParams

Inherits:
Base
  • Object
show all
Extended by:
RuboCop::Cop::AutoCorrector
Defined in:
lib/rubocop/cop/alchemrest/define_request_using_with_params.rb

Constant Summary collapse

MSG =
<<~MSG
  Using `with_params` to set defaults for a request is deprecated.
  Instead make your block that takes a `request` argument and call `request.defaults = { <some values> }`

    BAD:
    ```
    define_request :get_users, GetUsers, with_params: -> { { id: user_id } }
    ```

    GOOD:
    ```
    define_request :get_users, GetUsers do |request|
      request.defaults = { id: user_id }
    end
    ```
MSG

Instance Method Summary collapse

Instance Method Details

#build_autocorrection(method_name, klass, block) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rubocop/cop/alchemrest/define_request_using_with_params.rb', line 39

def build_autocorrection(method_name, klass, block)
  block_body = block.body

  params_value = block_body.source

  <<~CODE.chomp
    define_request #{method_name.source}, #{klass.source} do |request|
      request.defaults = #{params_value}
    end
  CODE
end

#on_send(node) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/rubocop/cop/alchemrest/define_request_using_with_params.rb', line 30

def on_send(node)
  on_define_request_with_params_proc_call?(node) do |method_name, klass, with_params_arg, block_node|
    add_offense(with_params_arg) do |corrector|
      correction = build_autocorrection(method_name, klass, block_node)
      corrector.replace(node, correction) if correction
    end
  end
end