graphql 0.19.3 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/analysis/max_query_complexity.rb +1 -1
  3. data/lib/graphql/analysis/max_query_depth.rb +1 -1
  4. data/lib/graphql/boolean_type.rb +2 -2
  5. data/lib/graphql/define/instance_definable.rb +2 -2
  6. data/lib/graphql/enum_type.rb +3 -3
  7. data/lib/graphql/field.rb +6 -6
  8. data/lib/graphql/float_type.rb +2 -2
  9. data/lib/graphql/id_type.rb +2 -2
  10. data/lib/graphql/input_object_type.rb +1 -1
  11. data/lib/graphql/int_type.rb +2 -2
  12. data/lib/graphql/internal_representation/rewrite.rb +12 -12
  13. data/lib/graphql/introspection/arguments_field.rb +1 -1
  14. data/lib/graphql/introspection/enum_value_type.rb +1 -1
  15. data/lib/graphql/introspection/enum_values_field.rb +1 -1
  16. data/lib/graphql/introspection/field_type.rb +1 -1
  17. data/lib/graphql/introspection/fields_field.rb +1 -1
  18. data/lib/graphql/introspection/input_fields_field.rb +1 -1
  19. data/lib/graphql/introspection/input_value_type.rb +2 -2
  20. data/lib/graphql/introspection/interfaces_field.rb +1 -1
  21. data/lib/graphql/introspection/of_type_field.rb +1 -1
  22. data/lib/graphql/introspection/possible_types_field.rb +1 -1
  23. data/lib/graphql/introspection/schema_field.rb +1 -1
  24. data/lib/graphql/introspection/schema_type.rb +5 -5
  25. data/lib/graphql/introspection/type_by_name_field.rb +1 -1
  26. data/lib/graphql/introspection/type_type.rb +6 -6
  27. data/lib/graphql/introspection/typename_field.rb +1 -1
  28. data/lib/graphql/language.rb +1 -0
  29. data/lib/graphql/language/comments.rb +44 -0
  30. data/lib/graphql/language/definition_slice.rb +1 -1
  31. data/lib/graphql/language/generation.rb +35 -12
  32. data/lib/graphql/language/lexer.rb +29 -10
  33. data/lib/graphql/language/lexer.rl +25 -6
  34. data/lib/graphql/language/nodes.rb +30 -23
  35. data/lib/graphql/language/parser.rb +33 -14
  36. data/lib/graphql/language/parser.y +33 -14
  37. data/lib/graphql/language/parser_tests.rb +86 -2
  38. data/lib/graphql/language/token.rb +3 -2
  39. data/lib/graphql/language/visitor.rb +3 -3
  40. data/lib/graphql/object_type.rb +1 -1
  41. data/lib/graphql/query/arguments.rb +23 -2
  42. data/lib/graphql/query/serial_execution/field_resolution.rb +31 -14
  43. data/lib/graphql/relay/base_connection.rb +1 -3
  44. data/lib/graphql/relay/connection_type.rb +1 -1
  45. data/lib/graphql/relay/mutation.rb +1 -1
  46. data/lib/graphql/relay/relation_connection.rb +7 -3
  47. data/lib/graphql/scalar_type.rb +1 -1
  48. data/lib/graphql/schema.rb +19 -8
  49. data/lib/graphql/schema/loader.rb +2 -2
  50. data/lib/graphql/schema/printer.rb +63 -8
  51. data/lib/graphql/schema/timeout_middleware.rb +11 -11
  52. data/lib/graphql/schema/validation.rb +12 -12
  53. data/lib/graphql/static_validation/arguments_validator.rb +1 -1
  54. data/lib/graphql/static_validation/rules/directives_are_defined.rb +1 -1
  55. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +1 -1
  56. data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +1 -1
  57. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +1 -1
  58. data/lib/graphql/static_validation/rules/fields_will_merge.rb +3 -2
  59. data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +3 -3
  60. data/lib/graphql/static_validation/rules/fragment_types_exist.rb +1 -1
  61. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +9 -4
  62. data/lib/graphql/static_validation/rules/fragments_are_named.rb +1 -1
  63. data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
  64. data/lib/graphql/static_validation/rules/fragments_are_used.rb +3 -3
  65. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  66. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +2 -2
  67. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +1 -1
  68. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +1 -1
  69. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +2 -2
  70. data/lib/graphql/static_validation/rules/variables_are_input_types.rb +1 -1
  71. data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +6 -6
  72. data/lib/graphql/static_validation/type_stack.rb +2 -2
  73. data/lib/graphql/string_type.rb +2 -2
  74. data/lib/graphql/version.rb +1 -1
  75. data/readme.md +1 -1
  76. data/spec/graphql/analysis/analyze_query_spec.rb +3 -3
  77. data/spec/graphql/analysis/query_complexity_spec.rb +7 -7
  78. data/spec/graphql/introspection/directive_type_spec.rb +2 -2
  79. data/spec/graphql/introspection/introspection_query_spec.rb +26 -26
  80. data/spec/graphql/language/generation_spec.rb +137 -53
  81. data/spec/graphql/language/lexer_spec.rb +22 -0
  82. data/spec/graphql/language/visitor_spec.rb +6 -6
  83. data/spec/graphql/query/arguments_spec.rb +45 -1
  84. data/spec/graphql/query/context_spec.rb +4 -4
  85. data/spec/graphql/query/executor_spec.rb +1 -1
  86. data/spec/graphql/query/serial_execution/value_resolution_spec.rb +1 -1
  87. data/spec/graphql/relay/mutation_spec.rb +2 -2
  88. data/spec/graphql/relay/node_spec.rb +2 -2
  89. data/spec/graphql/relay/relation_connection_spec.rb +16 -0
  90. data/spec/graphql/schema/loader_spec.rb +2 -2
  91. data/spec/graphql/schema/middleware_chain_spec.rb +6 -6
  92. data/spec/graphql/schema/printer_spec.rb +268 -18
  93. data/spec/graphql/schema/rescue_middleware_spec.rb +1 -1
  94. data/spec/graphql/schema/timeout_middleware_spec.rb +2 -2
  95. data/spec/graphql/schema_spec.rb +2 -2
  96. data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +13 -0
  97. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +1 -1
  98. data/spec/graphql/static_validation/type_stack_spec.rb +1 -1
  99. data/spec/support/dairy_app.rb +25 -25
  100. data/spec/support/dairy_data.rb +2 -0
  101. data/spec/support/star_wars_data.rb +2 -1
  102. data/spec/support/star_wars_schema.rb +18 -18
  103. metadata +19 -2
@@ -6,7 +6,7 @@ module GraphQL
6
6
 
7
7
  def validate(context)
8
8
  visitor = context.visitor
9
- visitor[GraphQL::Language::Nodes::Argument] << -> (node, parent) {
9
+ visitor[GraphQL::Language::Nodes::Argument] << ->(node, parent) {
10
10
  if parent.is_a?(GraphQL::Language::Nodes::InputObject)
11
11
  arg_defn = context.argument_definition
12
12
  if arg_defn.nil?
@@ -5,7 +5,7 @@ module GraphQL
5
5
 
6
6
  def validate(context)
7
7
  directive_names = context.schema.directives.keys
8
- context.visitor[GraphQL::Language::Nodes::Directive] << -> (node, parent) {
8
+ context.visitor[GraphQL::Language::Nodes::Directive] << ->(node, parent) {
9
9
  validate_directive(node, directive_names, context)
10
10
  }
11
11
  end
@@ -7,7 +7,7 @@ module GraphQL
7
7
  def validate(context)
8
8
  directives = context.schema.directives
9
9
 
10
- context.visitor[Nodes::Directive] << -> (node, parent) {
10
+ context.visitor[Nodes::Directive] << ->(node, parent) {
11
11
  validate_location(node, parent, directives, context)
12
12
  }
13
13
  end
@@ -5,7 +5,7 @@ module GraphQL
5
5
 
6
6
  def validate(context)
7
7
  visitor = context.visitor
8
- visitor[GraphQL::Language::Nodes::Field] << -> (node, parent) {
8
+ visitor[GraphQL::Language::Nodes::Field] << ->(node, parent) {
9
9
  return if context.skip_field?(node.name)
10
10
  parent_type = context.object_types[-2]
11
11
  parent_type = parent_type.unwrap
@@ -6,7 +6,7 @@ module GraphQL
6
6
  include GraphQL::StaticValidation::Message::MessageHelper
7
7
 
8
8
  def validate(context)
9
- context.visitor[GraphQL::Language::Nodes::Field] << -> (node, parent) {
9
+ context.visitor[GraphQL::Language::Nodes::Field] << ->(node, parent) {
10
10
  return if context.skip_field?(node.name)
11
11
  field_defn = context.field_definition
12
12
  validate_field_selections(node, field_defn, context)
@@ -5,12 +5,12 @@ module GraphQL
5
5
  fragments = {}
6
6
  has_selections = []
7
7
  visitor = context.visitor
8
- visitor[GraphQL::Language::Nodes::OperationDefinition] << -> (node, parent) {
8
+ visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
9
9
  if node.selections.any?
10
10
  has_selections << node
11
11
  end
12
12
  }
13
- visitor[GraphQL::Language::Nodes::Document].leave << -> (node, parent) {
13
+ visitor[GraphQL::Language::Nodes::Document].leave << ->(node, parent) {
14
14
  has_selections.each { |node|
15
15
  field_map = gather_fields_by_name(node.selections, {}, [], context)
16
16
  find_conflicts(field_map, [], context)
@@ -92,6 +92,7 @@ module GraphQL
92
92
  JSON.dump(arg)
93
93
  end
94
94
  end
95
+
95
96
  # Turn AST tree into a hash
96
97
  # can't look up args, the names just have to match
97
98
  def reduce_list(args)
@@ -5,7 +5,7 @@ module GraphQL
5
5
 
6
6
  def validate(context)
7
7
 
8
- context.visitor[GraphQL::Language::Nodes::InlineFragment] << -> (node, parent) {
8
+ context.visitor[GraphQL::Language::Nodes::InlineFragment] << ->(node, parent) {
9
9
  fragment_parent = context.object_types[-2]
10
10
  fragment_child = context.object_types.last
11
11
  if fragment_child
@@ -15,12 +15,12 @@ module GraphQL
15
15
 
16
16
  spreads_to_validate = []
17
17
 
18
- context.visitor[GraphQL::Language::Nodes::FragmentSpread] << -> (node, parent) {
18
+ context.visitor[GraphQL::Language::Nodes::FragmentSpread] << ->(node, parent) {
19
19
  fragment_parent = context.object_types.last
20
20
  spreads_to_validate << FragmentSpread.new(node: node, parent_type: fragment_parent, path: context.path)
21
21
  }
22
22
 
23
- context.visitor[GraphQL::Language::Nodes::Document].leave << -> (doc_node, parent) {
23
+ context.visitor[GraphQL::Language::Nodes::Document].leave << ->(doc_node, parent) {
24
24
  spreads_to_validate.each do |frag_spread|
25
25
  fragment_child_name = context.fragments[frag_spread.node.name].type
26
26
  fragment_child = context.schema.types.fetch(fragment_child_name, nil) # Might be non-existent type name
@@ -10,7 +10,7 @@ module GraphQL
10
10
 
11
11
  def validate(context)
12
12
  FRAGMENTS_ON_TYPES.each do |node_class|
13
- context.visitor[node_class] << -> (node, parent) { validate_type_exists(node, context) }
13
+ context.visitor[node_class] << ->(node, parent) { validate_type_exists(node, context) }
14
14
  end
15
15
  end
16
16
 
@@ -4,8 +4,8 @@ module GraphQL
4
4
  include GraphQL::StaticValidation::Message::MessageHelper
5
5
 
6
6
  def validate(context)
7
- context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << -> (node, parent) {
8
- if has_nested_spread(node, [], context)
7
+ context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << ->(node, parent) {
8
+ if has_nested_spread?(node, [], context)
9
9
  context.errors << message("Fragment #{node.name} contains an infinite loop", node, context: context)
10
10
  end
11
11
  }
@@ -13,12 +13,17 @@ module GraphQL
13
13
 
14
14
  private
15
15
 
16
- def has_nested_spread(fragment_def, parent_fragment_names, context)
16
+ def has_nested_spread?(fragment_def, parent_fragment_names, context)
17
17
  nested_spreads = get_spreads(fragment_def.selections)
18
18
 
19
19
  nested_spreads.any? do |spread|
20
20
  nested_def = context.fragments[spread.name]
21
- parent_fragment_names.include?(spread.name) || has_nested_spread(nested_def, parent_fragment_names + [fragment_def.name], context)
21
+ if nested_def.nil?
22
+ # this is another kind of error
23
+ false
24
+ else
25
+ parent_fragment_names.include?(spread.name) || has_nested_spread?(nested_def, parent_fragment_names + [fragment_def.name], context)
26
+ end
22
27
  end
23
28
  end
24
29
 
@@ -4,7 +4,7 @@ module GraphQL
4
4
  include GraphQL::StaticValidation::Message::MessageHelper
5
5
 
6
6
  def validate(context)
7
- context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << -> (node, parent) { validate_name_exists(node, context) }
7
+ context.visitor[GraphQL::Language::Nodes::FragmentDefinition] << ->(node, parent) { validate_name_exists(node, context) }
8
8
  end
9
9
 
10
10
  private
@@ -10,7 +10,7 @@ module GraphQL
10
10
 
11
11
  def validate(context)
12
12
  HAS_TYPE_CONDITION.each do |node_class|
13
- context.visitor[node_class] << -> (node, parent) {
13
+ context.visitor[node_class] << ->(node, parent) {
14
14
  validate_type_is_composite(node, context)
15
15
  }
16
16
  end
@@ -8,19 +8,19 @@ module GraphQL
8
8
  used_fragments = []
9
9
  defined_fragments = []
10
10
 
11
- v[GraphQL::Language::Nodes::Document] << -> (node, parent) {
11
+ v[GraphQL::Language::Nodes::Document] << ->(node, parent) {
12
12
  defined_fragments = node.definitions
13
13
  .select { |defn| defn.is_a?(GraphQL::Language::Nodes::FragmentDefinition) }
14
14
  .map { |node| FragmentInstance.new(node: node, path: context.path) }
15
15
  }
16
16
 
17
- v[GraphQL::Language::Nodes::FragmentSpread] << -> (node, parent) {
17
+ v[GraphQL::Language::Nodes::FragmentSpread] << ->(node, parent) {
18
18
  used_fragments << FragmentInstance.new(node: node, path: context.path)
19
19
  if defined_fragments.none? { |defn| defn.name == node.name }
20
20
  GraphQL::Language::Visitor::SKIP
21
21
  end
22
22
  }
23
- v[GraphQL::Language::Nodes::Document].leave << -> (node, parent) { add_errors(context, used_fragments, defined_fragments) }
23
+ v[GraphQL::Language::Nodes::Document].leave << ->(node, parent) { add_errors(context, used_fragments, defined_fragments) }
24
24
  end
25
25
 
26
26
  private
@@ -8,7 +8,7 @@ module GraphQL
8
8
 
9
9
  visitor = context.visitor
10
10
 
11
- visitor[GraphQL::Language::Nodes::OperationDefinition].enter << -> (ast_node, prev_ast_node) {
11
+ visitor[GraphQL::Language::Nodes::OperationDefinition].enter << ->(ast_node, prev_ast_node) {
12
12
  if ast_node.operation_type == 'mutation'
13
13
  context.errors << message('Schema is not configured for mutations', ast_node, context: context)
14
14
  return GraphQL::Language::Visitor::SKIP
@@ -5,8 +5,8 @@ module GraphQL
5
5
 
6
6
  def validate(context)
7
7
  v = context.visitor
8
- v[GraphQL::Language::Nodes::Field] << -> (node, parent) { validate_field(node, context) }
9
- v[GraphQL::Language::Nodes::Directive] << -> (node, parent) { validate_directive(node, context) }
8
+ v[GraphQL::Language::Nodes::Field] << ->(node, parent) { validate_field(node, context) }
9
+ v[GraphQL::Language::Nodes::Directive] << ->(node, parent) { validate_directive(node, context) }
10
10
  end
11
11
 
12
12
  private
@@ -8,7 +8,7 @@ module GraphQL
8
8
 
9
9
  visitor = context.visitor
10
10
 
11
- visitor[GraphQL::Language::Nodes::OperationDefinition].enter << -> (ast_node, prev_ast_node) {
11
+ visitor[GraphQL::Language::Nodes::OperationDefinition].enter << ->(ast_node, prev_ast_node) {
12
12
  if ast_node.operation_type == 'subscription'
13
13
  context.errors << message('Schema is not configured for subscriptions', ast_node, context: context)
14
14
  return GraphQL::Language::Visitor::SKIP
@@ -5,7 +5,7 @@ module GraphQL
5
5
 
6
6
  def validate(context)
7
7
  literal_validator = GraphQL::StaticValidation::LiteralValidator.new
8
- context.visitor[GraphQL::Language::Nodes::VariableDefinition] << -> (node, parent) {
8
+ context.visitor[GraphQL::Language::Nodes::VariableDefinition] << ->(node, parent) {
9
9
  if !node.default_value.nil?
10
10
  validate_default_value(node, literal_validator, context)
11
11
  end
@@ -7,11 +7,11 @@ module GraphQL
7
7
  # holds { name => ast_node } pairs
8
8
  declared_variables = {}
9
9
 
10
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << -> (node, parent) {
10
+ context.visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
11
11
  declared_variables = node.variables.each_with_object({}) { |var, memo| memo[var.name] = var }
12
12
  }
13
13
 
14
- context.visitor[GraphQL::Language::Nodes::Argument] << -> (node, parent) {
14
+ context.visitor[GraphQL::Language::Nodes::Argument] << ->(node, parent) {
15
15
  return if !node.value.is_a?(GraphQL::Language::Nodes::VariableIdentifier)
16
16
  if parent.is_a?(GraphQL::Language::Nodes::Field)
17
17
  arguments = context.field_definition.arguments
@@ -4,7 +4,7 @@ module GraphQL
4
4
  include GraphQL::StaticValidation::Message::MessageHelper
5
5
 
6
6
  def validate(context)
7
- context.visitor[GraphQL::Language::Nodes::VariableDefinition] << -> (node, parent) {
7
+ context.visitor[GraphQL::Language::Nodes::VariableDefinition] << ->(node, parent) {
8
8
  validate_is_input_type(node, context)
9
9
  }
10
10
  end
@@ -35,19 +35,19 @@ module GraphQL
35
35
 
36
36
  # OperationDefinitions and FragmentDefinitions
37
37
  # both push themselves onto the context stack (and pop themselves off)
38
- push_variable_context_stack = -> (node, parent) {
38
+ push_variable_context_stack = ->(node, parent) {
39
39
  # initialize the hash of vars for this context:
40
40
  variable_usages_for_context[node]
41
41
  variable_context_stack.push(node)
42
42
  }
43
43
 
44
- pop_variable_context_stack = -> (node, parent) {
44
+ pop_variable_context_stack = ->(node, parent) {
45
45
  variable_context_stack.pop
46
46
  }
47
47
 
48
48
 
49
49
  context.visitor[GraphQL::Language::Nodes::OperationDefinition] << push_variable_context_stack
50
- context.visitor[GraphQL::Language::Nodes::OperationDefinition] << -> (node, parent) {
50
+ context.visitor[GraphQL::Language::Nodes::OperationDefinition] << ->(node, parent) {
51
51
  # mark variables as defined:
52
52
  var_hash = variable_usages_for_context[node]
53
53
  node.variables.each { |var|
@@ -64,7 +64,7 @@ module GraphQL
64
64
  # For FragmentSpreads:
65
65
  # - find the context on the stack
66
66
  # - mark the context as containing this spread
67
- context.visitor[GraphQL::Language::Nodes::FragmentSpread] << -> (node, parent) {
67
+ context.visitor[GraphQL::Language::Nodes::FragmentSpread] << ->(node, parent) {
68
68
  variable_context = variable_context_stack.last
69
69
  spreads_for_context[variable_context] << node.name
70
70
  }
@@ -72,7 +72,7 @@ module GraphQL
72
72
  # For VariableIdentifiers:
73
73
  # - mark the variable as used
74
74
  # - assign its AST node
75
- context.visitor[GraphQL::Language::Nodes::VariableIdentifier] << -> (node, parent) {
75
+ context.visitor[GraphQL::Language::Nodes::VariableIdentifier] << ->(node, parent) {
76
76
  usage_context = variable_context_stack.last
77
77
  declared_variables = variable_usages_for_context[usage_context]
78
78
  usage = declared_variables[node.name]
@@ -82,7 +82,7 @@ module GraphQL
82
82
  }
83
83
 
84
84
 
85
- context.visitor[GraphQL::Language::Nodes::Document].leave << -> (node, parent) {
85
+ context.visitor[GraphQL::Language::Nodes::Document].leave << ->(node, parent) {
86
86
  fragment_definitions = variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::FragmentDefinition) }
87
87
  operation_definitions = variable_usages_for_context.select { |key, value| key.is_a?(GraphQL::Language::Nodes::OperationDefinition) }
88
88
 
@@ -41,8 +41,8 @@ module GraphQL
41
41
  @directive_definitions = []
42
42
  @argument_definitions = []
43
43
  @path = []
44
- visitor.enter << -> (node, parent) { PUSH_STRATEGIES[node.class].push(self, node) }
45
- visitor.leave << -> (node, parent) { PUSH_STRATEGIES[node.class].pop(self, node) }
44
+ visitor.enter << ->(node, parent) { PUSH_STRATEGIES[node.class].push(self, node) }
45
+ visitor.leave << ->(node, parent) { PUSH_STRATEGIES[node.class].pop(self, node) }
46
46
  end
47
47
 
48
48
  private
@@ -2,6 +2,6 @@ GraphQL::STRING_TYPE = GraphQL::ScalarType.define do
2
2
  name "String"
3
3
  description "Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text."
4
4
 
5
- coerce_result -> (value) { value.to_s }
6
- coerce_input -> (value) { value.is_a?(String) ? value : nil }
5
+ coerce_result ->(value) { value.to_s }
6
+ coerce_input ->(value) { value.is_a?(String) ? value : nil }
7
7
  end
@@ -1,3 +1,3 @@
1
1
  module GraphQL
2
- VERSION = "0.19.3"
2
+ VERSION = "0.19.4"
3
3
  end
data/readme.md CHANGED
@@ -48,7 +48,7 @@ QueryType = GraphQL::ObjectType.define do
48
48
  field :post do
49
49
  type PostType
50
50
  argument :id, !types.ID
51
- resolve -> (obj, args, ctx) { Post.find(args["id"]) }
51
+ resolve ->(obj, args, ctx) { Post.find(args["id"]) }
52
52
  end
53
53
  end
54
54
 
@@ -17,7 +17,7 @@ describe GraphQL::Analysis do
17
17
 
18
18
  describe ".analyze_query" do
19
19
  let(:node_counter) {
20
- -> (memo, visit_type, irep_node) {
20
+ ->(memo, visit_type, irep_node) {
21
21
  memo ||= Hash.new { |h,k| h[k] = 0 }
22
22
  visit_type == :enter && memo[irep_node.ast_node.class] += 1
23
23
  memo
@@ -57,7 +57,7 @@ describe GraphQL::Analysis do
57
57
  }
58
58
  }
59
59
  |}
60
- let(:variable_accessor) { -> (memo, visit_type, irep_node) { query.variables["cheeseId"] } }
60
+ let(:variable_accessor) { ->(memo, visit_type, irep_node) { query.variables["cheeseId"] } }
61
61
 
62
62
  before do
63
63
  @previous_query_analyzers = DummySchema.query_analyzers.dup
@@ -78,7 +78,7 @@ describe GraphQL::Analysis do
78
78
 
79
79
  describe "when processing fields" do
80
80
  let(:connection_counter) {
81
- -> (memo, visit_type, irep_node) {
81
+ ->(memo, visit_type, irep_node) {
82
82
  memo ||= Hash.new { |h,k| h[k] = 0 }
83
83
  if visit_type == :enter
84
84
  if irep_node.ast_node.is_a?(GraphQL::Language::Nodes::Field)
@@ -223,12 +223,12 @@ describe GraphQL::Analysis::QueryComplexity do
223
223
  single_complexity_type = GraphQL::ObjectType.define do
224
224
  name "SingleComplexity"
225
225
  field :value, types.Int, complexity: 0.1 do
226
- resolve -> (obj, args, ctx) { obj }
226
+ resolve ->(obj, args, ctx) { obj }
227
227
  end
228
228
  field :complexity, single_complexity_type do
229
229
  argument :value, types.Int
230
- complexity -> (ctx, args, child_complexity) { args[:value] + child_complexity }
231
- resolve -> (obj, args, ctx) { args[:value] }
230
+ complexity ->(ctx, args, child_complexity) { args[:value] + child_complexity }
231
+ resolve ->(obj, args, ctx) { args[:value] }
232
232
  end
233
233
  interfaces [complexity_interface]
234
234
  end
@@ -236,7 +236,7 @@ describe GraphQL::Analysis::QueryComplexity do
236
236
  double_complexity_type = GraphQL::ObjectType.define do
237
237
  name "DoubleComplexity"
238
238
  field :value, types.Int, complexity: 4 do
239
- resolve -> (obj, args, ctx) { obj }
239
+ resolve ->(obj, args, ctx) { obj }
240
240
  end
241
241
  interfaces [complexity_interface]
242
242
  end
@@ -245,13 +245,13 @@ describe GraphQL::Analysis::QueryComplexity do
245
245
  name "Query"
246
246
  field :complexity, single_complexity_type do
247
247
  argument :value, types.Int
248
- complexity -> (ctx, args, child_complexity) { args[:value] + child_complexity }
249
- resolve -> (obj, args, ctx) { args[:value] }
248
+ complexity ->(ctx, args, child_complexity) { args[:value] + child_complexity }
249
+ resolve ->(obj, args, ctx) { args[:value] }
250
250
  end
251
251
 
252
252
  field :innerComplexity, complexity_interface do
253
253
  argument :value, types.Int
254
- resolve -> (obj, args, ctx) { args[:value] }
254
+ resolve ->(obj, args, ctx) { args[:value] }
255
255
  end
256
256
  end
257
257
 
@@ -23,7 +23,7 @@ describe GraphQL::Introspection::DirectiveType do
23
23
  "__schema" => {
24
24
  "directives" => [
25
25
  {
26
- "name" => "skip",
26
+ "name" => "include",
27
27
  "args" => [
28
28
  {"name"=>"if", "type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"Boolean"}}}
29
29
  ],
@@ -33,7 +33,7 @@ describe GraphQL::Introspection::DirectiveType do
33
33
  "onOperation" => false,
34
34
  },
35
35
  {
36
- "name" => "include",
36
+ "name" => "skip",
37
37
  "args" => [
38
38
  {"name"=>"if", "type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"Boolean"}}}
39
39
  ],
@@ -9,18 +9,18 @@ describe "GraphQL::Introspection::INTROSPECTION_QUERY" do
9
9
  end
10
10
 
11
11
  it "handles deeply nested (<= 7) schemas" do
12
- query_type = GraphQL::ObjectType.define do
13
- name "DeepQuery"
14
- field :foo do
15
- type !GraphQL::ListType.new(
16
- of_type: !GraphQL::ListType.new(
17
- of_type: !GraphQL::ListType.new(
18
- of_type: GraphQL::FLOAT_TYPE
19
- )
20
- )
21
- )
22
- end
23
- end
12
+ query_type = GraphQL::ObjectType.define do
13
+ name "DeepQuery"
14
+ field :foo do
15
+ type !GraphQL::ListType.new(
16
+ of_type: !GraphQL::ListType.new(
17
+ of_type: !GraphQL::ListType.new(
18
+ of_type: GraphQL::FLOAT_TYPE
19
+ )
20
+ )
21
+ )
22
+ end
23
+ end
24
24
 
25
25
  deep_schema = GraphQL::Schema.define do
26
26
  query query_type
@@ -31,20 +31,20 @@ describe "GraphQL::Introspection::INTROSPECTION_QUERY" do
31
31
  end
32
32
 
33
33
  it "doesn't handle too deeply nested (< 8) schemas" do
34
- query_type = GraphQL::ObjectType.define do
35
- name "DeepQuery"
36
- field :foo do
37
- type !GraphQL::ListType.new(
38
- of_type: !GraphQL::ListType.new(
39
- of_type: !GraphQL::ListType.new(
40
- of_type: !GraphQL::ListType.new(
41
- of_type: GraphQL::FLOAT_TYPE
42
- )
43
- )
44
- )
45
- )
46
- end
47
- end
34
+ query_type = GraphQL::ObjectType.define do
35
+ name "DeepQuery"
36
+ field :foo do
37
+ type !GraphQL::ListType.new(
38
+ of_type: !GraphQL::ListType.new(
39
+ of_type: !GraphQL::ListType.new(
40
+ of_type: !GraphQL::ListType.new(
41
+ of_type: GraphQL::FLOAT_TYPE
42
+ )
43
+ )
44
+ )
45
+ )
46
+ end
47
+ end
48
48
 
49
49
  deep_schema = GraphQL::Schema.define do
50
50
  query query_type