Class: RuboCop::Cop::Rails::ResponseParsedBody

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector, TargetRailsVersion
Defined in:
lib/rubocop/cop/rails/response_parsed_body.rb

Overview

Prefer ‘response.parsed_body` to `JSON.parse(response.body)`.

Examples:

# bad
JSON.parse(response.body)

# good
response.parsed_body

Constant Summary collapse

MSG =
'Prefer `response.parsed_body` to `JSON.parse(response.body)`.'
RESTRICT_ON_SEND =
%i[parse].freeze

Instance Method Summary collapse

Methods included from TargetRailsVersion

minimum_target_rails_version, support_target_rails_version?

Instance Method Details

#json_parse_response_body?(node) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/rubocop/cop/rails/response_parsed_body.rb', line 30

def_node_matcher :json_parse_response_body?, <<~PATTERN
  (send
    (const {nil? cbase} :JSON)
    :parse
    (send
      (send nil? :response)
      :body
    )
  )
PATTERN

#on_send(node) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/rubocop/cop/rails/response_parsed_body.rb', line 41

def on_send(node)
  return unless json_parse_response_body?(node)

  add_offense(node) do |corrector|
    autocorrect(corrector, node)
  end
end