Sha256: 63c41ed5be64f7006e91ebdf9d49c642105dc88e3bcf778ad1ebf2e0056f3752

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    module Ezcater
      # Enforce use of GQLErrors helpers instead of throwing
      # GraphQL::ExecutionErrors directly
      #
      # @example
      #
      #   # good
      #   GQLErrors.summary_error("An error occurred")
      #   GQLErrors.request_error("You can't access this", 401)
      #   GQLErrors.field_error("is invalid", :first_name, "First Name")
      #   GQLErrors.field_errors_for(my_model, context)
      #   GQLErrors.field_errors_for(my_model, context, summary_error: "An error occurred")
      #   GQLErrors.field_errors_for(my_model, context, field_mapping: { first: :first_name })
      #
      #   # bad
      #   GraphQL::ExecutionError.new("An error occurred")
      #   GraphQL::ExecutionError.new("You can't access this", options: { status_code: 401 })
      class RequireGqlErrorHelpers < Base
        MSG = "Use the helpers provided by `GQLErrors` instead of raising `GraphQL::ExecutionError` directly."

        def_node_matcher :graphql_const?, <<~PATTERN
          (const (const _ :GraphQL) :ExecutionError)
        PATTERN

        def on_const(node)
          return unless graphql_const?(node)

          add_offense(node.loc.expression, message: MSG)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ezcater_rubocop-8.0.0 lib/rubocop/cop/ezcater/require_gql_error_helpers.rb
ezcater_rubocop-7.1.2 lib/rubocop/cop/ezcater/require_gql_error_helpers.rb
ezcater_rubocop-7.1.1 lib/rubocop/cop/ezcater/require_gql_error_helpers.rb
ezcater_rubocop-7.1.0 lib/rubocop/cop/ezcater/require_gql_error_helpers.rb