Sha256: d067a0bbe1e50160eb1b50ca3e7384c643d454871f274bd12c3d2b9dac6acab6
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
module GraphQL module StaticValidation class FragmentsAreOnCompositeTypes include GraphQL::StaticValidation::Message::MessageHelper HAS_TYPE_CONDITION = [ GraphQL::Language::Nodes::FragmentDefinition, GraphQL::Language::Nodes::InlineFragment, ] def validate(context) HAS_TYPE_CONDITION.each do |node_class| context.visitor[node_class] << ->(node, parent) { validate_type_is_composite(node, context) } end end private def validate_type_is_composite(node, context) node_type = node.type if node_type.nil? # Inline fragment on the same type else type_name = node_type.to_query_string type_def = context.schema.types.fetch(type_name, nil) if type_def.nil? || !type_def.kind.composite? context.errors << message("Invalid fragment on type #{type_name} (must be Union, Interface or Object)", node, context: context) GraphQL::Language::Visitor::SKIP end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
graphql-1.0.0 | lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb |