Class: GraphQL::Validations::FieldsWillMerge

Inherits:
Object
  • Object
show all
Defined in:
lib/graph_ql/validations/fields_will_merge.rb

Defined Under Namespace

Classes: FieldDefinitionComparison

Constant Summary collapse

HAS_SELECTIONS =
[GraphQL::Nodes::OperationDefinition, GraphQL::Nodes::InlineFragment]

Instance Method Summary collapse

Instance Method Details

#validate(context) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/graph_ql/validations/fields_will_merge.rb', line 4

def validate(context)
  fragments = {}
  has_selections = []
  visitor = context.visitor
  HAS_SELECTIONS.each do |node_class|
    visitor[node_class] << -> (node) { has_selections << node }
  end
  visitor[GraphQL::Nodes::FragmentDefinition] << -> (node) { fragments[node.name] = node }
  visitor[GraphQL::Nodes::Document].leave << -> (node) {
    has_selections.each { |node| validate_selections(node.selections, {}, fragments, context.errors)}
  }
end