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
@@ -92,7 +92,7 @@ describe GraphQL::Schema do
92
92
  assert_raises(NotImplementedError) {
93
93
  GraphQL::Schema.define do
94
94
  query(query_type)
95
- resolve_type -> (obj, ctx) { :whatever }
95
+ resolve_type ->(obj, ctx) { :whatever }
96
96
  end
97
97
  }
98
98
  end
@@ -118,7 +118,7 @@ describe GraphQL::Schema do
118
118
  assert_raises(NotImplementedError) {
119
119
  GraphQL::Schema.define do
120
120
  query(query_type)
121
- resolve_type -> (obj, ctx) { :whatever }
121
+ resolve_type ->(obj, ctx) { :whatever }
122
122
  end
123
123
  }
124
124
  end
@@ -47,4 +47,17 @@ describe GraphQL::StaticValidation::FragmentsAreFinite do
47
47
  ]
48
48
  assert_equal(expected, errors)
49
49
  end
50
+
51
+ describe "undefined spreads inside fragments" do
52
+ let(:query_string) {%|
53
+ {
54
+ cheese(id: 1) { ... frag1 }
55
+ }
56
+ fragment frag1 on Cheese { id, ...frag2 }
57
+ |}
58
+
59
+ it "doesn't blow up" do
60
+ assert_equal("Fragment frag2 was used, but not defined", errors.first["message"])
61
+ end
62
+ end
50
63
  end
@@ -4,7 +4,7 @@ describe GraphQL::StaticValidation::FragmentsAreUsed do
4
4
  include StaticValidationHelpers
5
5
  let(:query_string) {"
6
6
  query getCheese {
7
- name,
7
+ name
8
8
  ...cheeseFields
9
9
  ...undefinedFields
10
10
  }
@@ -7,7 +7,7 @@ class TypeCheckValidator
7
7
 
8
8
  def validate(context)
9
9
  self.class.checks.clear
10
- context.visitor[GraphQL::Language::Nodes::Field] << -> (node, parent) {
10
+ context.visitor[GraphQL::Language::Nodes::Field] << ->(node, parent) {
11
11
  self.class.checks << context.object_types.map(&:name)
12
12
  }
13
13
  end
@@ -58,7 +58,7 @@ CheeseType = GraphQL::ObjectType.define do
58
58
  # metadata test
59
59
  joins [:cheeses, :milks]
60
60
  argument :source, !types[!DairyAnimalEnum], default_value: [1]
61
- resolve -> (t, a, c) {
61
+ resolve ->(t, a, c) {
62
62
  # get the strings out:
63
63
  sources = a["source"]
64
64
  if sources.include?("YAK")
@@ -71,12 +71,12 @@ CheeseType = GraphQL::ObjectType.define do
71
71
 
72
72
  field :nullableCheese, CheeseType, "Cheeses like this one" do
73
73
  argument :source, types[!DairyAnimalEnum]
74
- resolve -> (t, a, c) { raise("NotImplemented") }
74
+ resolve ->(t, a, c) { raise("NotImplemented") }
75
75
  end
76
76
 
77
77
  field :deeplyNullableCheese, CheeseType, "Cheeses like this one" do
78
78
  argument :source, types[types[DairyAnimalEnum]]
79
- resolve -> (t, a, c) { raise("NotImplemented") }
79
+ resolve ->(t, a, c) { raise("NotImplemented") }
80
80
  end
81
81
 
82
82
  # Keywords can be used for definition methods
@@ -96,17 +96,17 @@ MilkType = GraphQL::ObjectType.define do
96
96
  field :origin, !types.String, "Place the milk comes from"
97
97
  field :flavors, types[types.String], "Chocolate, Strawberry, etc" do
98
98
  argument :limit, types.Int
99
- resolve -> (milk, args, ctx) {
99
+ resolve ->(milk, args, ctx) {
100
100
  args[:limit] ? milk.flavors.first(args[:limit]) : milk.flavors
101
101
  }
102
102
  end
103
103
  field :executionError do
104
104
  type GraphQL::STRING_TYPE
105
- resolve -> (t, a, c) { raise(GraphQL::ExecutionError, "There was an execution error") }
105
+ resolve ->(t, a, c) { raise(GraphQL::ExecutionError, "There was an execution error") }
106
106
  end
107
107
 
108
108
  field :allDairy, -> { types[DairyProductUnion] } do
109
- resolve -> (obj, args, ctx) { CHEESES.values + MILKS.values }
109
+ resolve ->(obj, args, ctx) { CHEESES.values + MILKS.values }
110
110
  end
111
111
  end
112
112
 
@@ -153,12 +153,12 @@ CowType = GraphQL::ObjectType.define do
153
153
 
154
154
  field :cantBeNullButIs do
155
155
  type !GraphQL::STRING_TYPE
156
- resolve -> (t, a, c) { nil }
156
+ resolve ->(t, a, c) { nil }
157
157
  end
158
158
 
159
159
  field :cantBeNullButRaisesExecutionError do
160
160
  type !GraphQL::STRING_TYPE
161
- resolve -> (t, a, c) { raise GraphQL::ExecutionError, "BOOM" }
161
+ resolve ->(t, a, c) { raise GraphQL::ExecutionError, "BOOM" }
162
162
  end
163
163
  end
164
164
 
@@ -188,11 +188,11 @@ DeepNonNullType = GraphQL::ObjectType.define do
188
188
  name "DeepNonNull"
189
189
  field :nonNullInt, !types.Int do
190
190
  argument :returning, types.Int
191
- resolve -> (obj, args, ctx) { args[:returning] }
191
+ resolve ->(obj, args, ctx) { args[:returning] }
192
192
  end
193
193
 
194
194
  field :deepNonNull, DeepNonNullType.to_non_null_type do
195
- resolve -> (obj, args, ctx) { :deepNonNull }
195
+ resolve ->(obj, args, ctx) { :deepNonNull }
196
196
  end
197
197
  end
198
198
 
@@ -205,7 +205,7 @@ class FetchField
205
205
  description(desc)
206
206
  argument :id, id_type
207
207
 
208
- resolve -> (t, a, c) {
208
+ resolve ->(t, a, c) {
209
209
  id_string = a["id"].to_s # Cheese has Int type, Milk has ID type :(
210
210
  id, item = data.find { |id, item| id.to_s == id_string }
211
211
  item
@@ -222,7 +222,7 @@ class SingletonField
222
222
  type(return_type)
223
223
  description(desc)
224
224
 
225
- resolve -> (t, a, c) {data}
225
+ resolve ->(t, a, c) {data}
226
226
  end
227
227
  end
228
228
  end
@@ -231,7 +231,7 @@ SourceFieldDefn = Proc.new {
231
231
  type GraphQL::ListType.new(of_type: CheeseType)
232
232
  description "Cheese from source"
233
233
  argument :source, DairyAnimalEnum, default_value: 1
234
- resolve -> (target, arguments, context) {
234
+ resolve ->(target, arguments, context) {
235
235
  CHEESES.values.select{ |c| c.source == arguments["source"] }
236
236
  }
237
237
  }
@@ -240,7 +240,7 @@ FavoriteFieldDefn = GraphQL::Field.define do
240
240
  name "favoriteEdible"
241
241
  description "My favorite food"
242
242
  type EdibleInterface
243
- resolve -> (t, a, c) { MILKS[1] }
243
+ resolve ->(t, a, c) { MILKS[1] }
244
244
  end
245
245
 
246
246
  DairyAppQueryType = GraphQL::ObjectType.define do
@@ -260,7 +260,7 @@ DairyAppQueryType = GraphQL::ObjectType.define do
260
260
  type !DairyProductUnion
261
261
  # This is a list just for testing 😬
262
262
  argument :product, types[DairyProductInputType], default_value: [{"source" => "SHEEP"}]
263
- resolve -> (t, args, c) {
263
+ resolve ->(t, args, c) {
264
264
  source = args["product"][0][:source] # String or Sym is ok
265
265
  products = CHEESES.values + MILKS.values
266
266
  if !source.nil?
@@ -272,7 +272,7 @@ DairyAppQueryType = GraphQL::ObjectType.define do
272
272
 
273
273
  field :allDairy, types[DairyProductUnion] do
274
274
  argument :executionErrorAtIndex, types.Int
275
- resolve -> (obj, args, ctx) {
275
+ resolve ->(obj, args, ctx) {
276
276
  result = CHEESES.values + MILKS.values
277
277
  result[args[:executionErrorAtIndex]] = GraphQL::ExecutionError.new("missing dairy") if args[:executionErrorAtIndex]
278
278
  result
@@ -280,27 +280,27 @@ DairyAppQueryType = GraphQL::ObjectType.define do
280
280
  end
281
281
 
282
282
  field :allEdible, types[EdibleInterface] do
283
- resolve -> (obj, args, ctx) { CHEESES.values + MILKS.values }
283
+ resolve ->(obj, args, ctx) { CHEESES.values + MILKS.values }
284
284
  end
285
285
 
286
286
  field :error do
287
287
  description "Raise an error"
288
288
  type GraphQL::STRING_TYPE
289
- resolve -> (t, a, c) { raise("This error was raised on purpose") }
289
+ resolve ->(t, a, c) { raise("This error was raised on purpose") }
290
290
  end
291
291
 
292
292
  field :executionError do
293
293
  type GraphQL::STRING_TYPE
294
- resolve -> (t, a, c) { raise(GraphQL::ExecutionError, "There was an execution error") }
294
+ resolve ->(t, a, c) { raise(GraphQL::ExecutionError, "There was an execution error") }
295
295
  end
296
296
 
297
297
  # To test possibly-null fields
298
298
  field :maybeNull, MaybeNullType do
299
- resolve -> (t, a, c) { OpenStruct.new(cheese: nil) }
299
+ resolve ->(t, a, c) { OpenStruct.new(cheese: nil) }
300
300
  end
301
301
 
302
302
  field :deepNonNull, !DeepNonNullType do
303
- resolve -> (o, a, c) { :deepNonNull }
303
+ resolve ->(o, a, c) { :deepNonNull }
304
304
  end
305
305
  end
306
306
 
@@ -317,7 +317,7 @@ DairyAppMutationType = GraphQL::ObjectType.define do
317
317
  field :pushValue, !types[!types.Int] do
318
318
  description("Push a value onto a global array :D")
319
319
  argument :value, !types.Int
320
- resolve -> (o, args, ctx) {
320
+ resolve ->(o, args, ctx) {
321
321
  GLOBAL_VALUES << args[:value]
322
322
  GLOBAL_VALUES
323
323
  }
@@ -326,7 +326,7 @@ DairyAppMutationType = GraphQL::ObjectType.define do
326
326
  field :replaceValues, !types[!types.Int] do
327
327
  description("Replace the global array with new values")
328
328
  argument :input, !ReplaceValuesInputType
329
- resolve -> (o, args, ctx) {
329
+ resolve ->(o, args, ctx) {
330
330
  GLOBAL_VALUES.clear
331
331
  GLOBAL_VALUES.push(*args[:input][:values])
332
332
  GLOBAL_VALUES
@@ -337,7 +337,7 @@ end
337
337
  SubscriptionType = GraphQL::ObjectType.define do
338
338
  name "Subscription"
339
339
  field :test, types.String do
340
- resolve -> (o, a, c) { "Test" }
340
+ resolve ->(o, a, c) { "Test" }
341
341
  end
342
342
  end
343
343
 
@@ -350,7 +350,7 @@ DummySchema = GraphQL::Schema.define do
350
350
 
351
351
  rescue_from(NoSuchDairyError) { |err| err.message }
352
352
 
353
- resolve_type -> (obj, ctx) {
353
+ resolve_type ->(obj, ctx) {
354
354
  DummySchema.types[obj.class.name]
355
355
  }
356
356
  end
@@ -1,3 +1,5 @@
1
+ require 'ostruct'
2
+
1
3
  Cheese = Struct.new(:id, :flavor, :origin, :fat_content, :source)
2
4
  CHEESES = {
3
5
  1 => Cheese.new(1, "Brie", "France", 0.19, 1),
@@ -1,3 +1,4 @@
1
+ require 'ostruct'
1
2
 
2
3
  names = [
3
4
  'X-Wing',
@@ -73,6 +74,6 @@ def STAR_WARS_DATA.create_ship(name, faction_id)
73
74
  new_id = (self["Ship"].keys.map(&:to_i).max + 1).to_s
74
75
  new_ship = OpenStruct.new(id: new_id, name: name)
75
76
  self["Ship"][new_id] = new_ship
76
- self["Faction"][faction_id]["ships"] << new_id
77
+ self["Faction"][faction_id].ships << new_id
77
78
  new_ship
78
79
  end
@@ -21,7 +21,7 @@ BaseConnectionWithTotalCountType = BaseType.define_connection do
21
21
  name "BasesConnectionWithTotalCount"
22
22
  field :totalCount do
23
23
  type types.Int
24
- resolve -> (obj, args, ctx) { obj.nodes.count }
24
+ resolve ->(obj, args, ctx) { obj.nodes.count }
25
25
  end
26
26
  end
27
27
 
@@ -40,7 +40,7 @@ CustomBaseEdgeType = BaseType.define_edge do
40
40
  field :upcasedName, types.String, property: :upcased_name
41
41
  field :upcasedParentName, types.String, property: :upcased_parent_name
42
42
  field :edgeClassName, types.String do
43
- resolve -> (obj, args, ctx) { obj.class.name }
43
+ resolve ->(obj, args, ctx) { obj.class.name }
44
44
  end
45
45
  end
46
46
 
@@ -49,10 +49,10 @@ CustomEdgeBaseConnectionType = BaseType.define_connection(edge_class: CustomBase
49
49
 
50
50
  field :totalCountTimes100 do
51
51
  type types.Int
52
- resolve -> (obj, args, ctx) { obj.nodes.count * 100 }
52
+ resolve ->(obj, args, ctx) { obj.nodes.count * 100 }
53
53
  end
54
54
 
55
- field :fieldName, types.String, resolve: -> (obj, args, ctx) { obj.field.name }
55
+ field :fieldName, types.String, resolve: ->(obj, args, ctx) { obj.field.name }
56
56
  end
57
57
 
58
58
  Faction = GraphQL::ObjectType.define do
@@ -62,7 +62,7 @@ Faction = GraphQL::ObjectType.define do
62
62
  field :id, !types.ID, resolve: GraphQL::Relay::GlobalIdResolve.new(type: Faction)
63
63
  field :name, types.String
64
64
  connection :ships, Ship.connection_type do
65
- resolve -> (obj, args, ctx) {
65
+ resolve ->(obj, args, ctx) {
66
66
  all_ships = obj.ships.map {|ship_id| STAR_WARS_DATA["Ship"][ship_id] }
67
67
  if args[:nameIncludes]
68
68
  all_ships = all_ships.select { |ship| ship.name.include?(args[:nameIncludes])}
@@ -73,7 +73,7 @@ Faction = GraphQL::ObjectType.define do
73
73
  argument :nameIncludes, types.String
74
74
  end
75
75
  connection :shipsWithMaxPageSize, Ship.connection_type, max_page_size: 2 do
76
- resolve -> (obj, args, ctx) {
76
+ resolve ->(obj, args, ctx) {
77
77
  all_ships = obj.ships.map {|ship_id| STAR_WARS_DATA["Ship"][ship_id] }
78
78
  if args[:nameIncludes]
79
79
  all_ships = all_ships.select { |ship| ship.name.include?(args[:nameIncludes])}
@@ -87,7 +87,7 @@ Faction = GraphQL::ObjectType.define do
87
87
  connection :bases, BaseConnectionWithTotalCountType do
88
88
  # Resolve field should return an Array, the Connection
89
89
  # will do the rest!
90
- resolve -> (obj, args, ctx) {
90
+ resolve ->(obj, args, ctx) {
91
91
  all_bases = Base.where(id: obj.bases)
92
92
  if args[:nameIncludes]
93
93
  all_bases = all_bases.where("name LIKE ?", "%#{args[:nameIncludes]}%")
@@ -100,7 +100,7 @@ Faction = GraphQL::ObjectType.define do
100
100
  connection :basesClone, BaseType.connection_type
101
101
  connection :basesByName, BaseType.connection_type, property: :bases do
102
102
  argument :order, types.String, default_value: "name"
103
- resolve -> (obj, args, ctx) {
103
+ resolve ->(obj, args, ctx) {
104
104
  if args[:order].present?
105
105
  obj.bases.order(args[:order])
106
106
  else
@@ -110,16 +110,16 @@ Faction = GraphQL::ObjectType.define do
110
110
  end
111
111
 
112
112
  connection :basesWithMaxLimitRelation, BaseType.connection_type, max_page_size: 2 do
113
- resolve -> (object, args, context) { Base.all }
113
+ resolve ->(object, args, context) { Base.all }
114
114
  end
115
115
 
116
116
  connection :basesWithMaxLimitArray, BaseType.connection_type, max_page_size: 2 do
117
- resolve -> (object, args, context) { Base.all.to_a }
117
+ resolve ->(object, args, context) { Base.all.to_a }
118
118
  end
119
119
 
120
120
  connection :basesAsSequelDataset, BaseConnectionWithTotalCountType do
121
121
  argument :nameIncludes, types.String
122
- resolve -> (obj, args, ctx) {
122
+ resolve ->(obj, args, ctx) {
123
123
  all_bases = SequelBase.where(faction_id: obj.id)
124
124
  if args[:nameIncludes]
125
125
  all_bases = all_bases.where("name LIKE ?", "%#{args[:nameIncludes]}%")
@@ -155,7 +155,7 @@ IntroduceShipMutation = GraphQL::Relay::Mutation.define do
155
155
  return_field :faction, Faction
156
156
 
157
157
  # Here's the mutation operation:
158
- resolve -> (root_obj, inputs, ctx) {
158
+ resolve ->(root_obj, inputs, ctx) {
159
159
  faction_id = inputs["factionId"]
160
160
  ship = STAR_WARS_DATA.create_ship(inputs["shipName"], faction_id)
161
161
  faction = STAR_WARS_DATA["Faction"][faction_id]
@@ -169,15 +169,15 @@ end
169
169
  QueryType = GraphQL::ObjectType.define do
170
170
  name "Query"
171
171
  field :rebels, Faction do
172
- resolve -> (obj, args, ctx) { STAR_WARS_DATA["Faction"]["1"]}
172
+ resolve ->(obj, args, ctx) { STAR_WARS_DATA["Faction"]["1"]}
173
173
  end
174
174
 
175
175
  field :empire, Faction do
176
- resolve -> (obj, args, ctx) { STAR_WARS_DATA["Faction"]["2"]}
176
+ resolve ->(obj, args, ctx) { STAR_WARS_DATA["Faction"]["2"]}
177
177
  end
178
178
 
179
179
  field :largestBase, BaseType do
180
- resolve -> (obj, args, ctx) { Base.find(3) }
180
+ resolve ->(obj, args, ctx) { Base.find(3) }
181
181
  end
182
182
 
183
183
  field :node, GraphQL::Relay::Node.field
@@ -193,7 +193,7 @@ StarWarsSchema = GraphQL::Schema.define do
193
193
  query(QueryType)
194
194
  mutation(MutationType)
195
195
 
196
- resolve_type -> (object, ctx) {
196
+ resolve_type ->(object, ctx) {
197
197
  if object == :test_error
198
198
  :not_a_type
199
199
  elsif object.is_a?(Base)
@@ -207,12 +207,12 @@ StarWarsSchema = GraphQL::Schema.define do
207
207
  end
208
208
  }
209
209
 
210
- object_from_id -> (node_id, ctx) do
210
+ object_from_id ->(node_id, ctx) do
211
211
  type_name, id = GraphQL::Schema::UniqueWithinType.decode(node_id)
212
212
  STAR_WARS_DATA[type_name][id]
213
213
  end
214
214
 
215
- id_from_object -> (object, type, ctx) do
215
+ id_from_object ->(object, type, ctx) do
216
216
  GraphQL::Schema::UniqueWithinType.encode(type.name, object.id)
217
217
  end
218
218
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.3
4
+ version: 0.19.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-13 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codeclimate-test-reporter
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: '11.0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.44'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.44'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: activerecord
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -349,6 +363,7 @@ files:
349
363
  - lib/graphql/introspection/typename_field.rb
350
364
  - lib/graphql/invalid_null_error.rb
351
365
  - lib/graphql/language.rb
366
+ - lib/graphql/language/comments.rb
352
367
  - lib/graphql/language/definition_slice.rb
353
368
  - lib/graphql/language/generation.rb
354
369
  - lib/graphql/language/lexer.rb
@@ -467,6 +482,7 @@ files:
467
482
  - spec/graphql/language/definition_slice_spec.rb
468
483
  - spec/graphql/language/equality_spec.rb
469
484
  - spec/graphql/language/generation_spec.rb
485
+ - spec/graphql/language/lexer_spec.rb
470
486
  - spec/graphql/language/nodes_spec.rb
471
487
  - spec/graphql/language/parser_spec.rb
472
488
  - spec/graphql/language/visitor_spec.rb
@@ -584,6 +600,7 @@ test_files:
584
600
  - spec/graphql/language/definition_slice_spec.rb
585
601
  - spec/graphql/language/equality_spec.rb
586
602
  - spec/graphql/language/generation_spec.rb
603
+ - spec/graphql/language/lexer_spec.rb
587
604
  - spec/graphql/language/nodes_spec.rb
588
605
  - spec/graphql/language/parser_spec.rb
589
606
  - spec/graphql/language/visitor_spec.rb