Sha256: 4b2b0006a5aa5070c2f0b01440f3f9fa9e36d4a01057b3e8292f8447b9a29f20

Contents?: true

Size: 1.33 KB

Versions: 20

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true
module GraphQL
  module StaticValidation
    module RequiredArgumentsArePresent
      def on_field(node, _parent)
        assert_required_args(node, field_definition)
        super
      end

      def on_directive(node, _parent)
        directive_defn = context.schema_directives[node.name]
        assert_required_args(node, directive_defn)
        super
      end

      private

      def assert_required_args(ast_node, defn)
        args = @context.query.types.arguments(defn)
        return if args.empty?
        present_argument_names = ast_node.arguments.map(&:name)
        required_argument_names = context.query.types.arguments(defn)
          .select { |a| a.type.kind.non_null? && !a.default_value? && context.query.types.argument(defn, a.name) }
          .map!(&:name)

        missing_names = required_argument_names - present_argument_names
        if missing_names.any?
          add_error(GraphQL::StaticValidation::RequiredArgumentsArePresentError.new(
            "#{ast_node.class.name.split("::").last} '#{ast_node.name}' is missing required arguments: #{missing_names.join(", ")}",
            nodes: ast_node,
            class_name: ast_node.class.name.split("::").last,
            name: ast_node.name,
            arguments: "#{missing_names.join(", ")}"
          ))
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
graphql-2.3.22 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.21 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.4.4 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.4.3 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.4.2 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.4.1 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.4.0 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.20 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.19 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.18 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.17 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.16 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.15 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.14 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.13 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.12 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.11 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.10 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.9 lib/graphql/static_validation/rules/required_arguments_are_present.rb
graphql-2.3.8 lib/graphql/static_validation/rules/required_arguments_are_present.rb