class GraphQL::StaticValidation::FragmentNamesAreUnique

Public Instance Methods

validate(context) click to toggle source
# File lib/graphql/static_validation/rules/fragment_names_are_unique.rb, line 6
def validate(context)
  fragments_by_name = Hash.new { |h, k| h[k] = [] }
  context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << ->(node, parent) {
    fragments_by_name[node.name] << node
  }

  context.visitor[GraphQL::Language::Nodes::Document].leave << ->(node, parent) {
    fragments_by_name.each do |name, fragments|
      if fragments.length > 1
        context.errors << message(%Q|Fragment name "#{name}" must be unique|, fragments, context: context)
      end
    end
  }
end