graphql 0.17.2 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql.rb +1 -0
- data/lib/graphql/analysis/query_depth.rb +1 -1
- data/lib/graphql/base_type.rb +25 -1
- data/lib/graphql/define.rb +2 -0
- data/lib/graphql/define/assign_connection.rb +11 -0
- data/lib/graphql/define/assign_global_id_field.rb +11 -0
- data/lib/graphql/define/assign_object_field.rb +21 -20
- data/lib/graphql/define/defined_object_proxy.rb +2 -2
- data/lib/graphql/define/instance_definable.rb +13 -3
- data/lib/graphql/field.rb +1 -1
- data/lib/graphql/language/generation.rb +57 -6
- data/lib/graphql/language/lexer.rb +434 -212
- data/lib/graphql/language/lexer.rl +18 -0
- data/lib/graphql/language/nodes.rb +75 -0
- data/lib/graphql/language/parser.rb +853 -341
- data/lib/graphql/language/parser.y +114 -17
- data/lib/graphql/query.rb +15 -1
- data/lib/graphql/relay.rb +13 -0
- data/lib/graphql/relay/array_connection.rb +80 -0
- data/lib/graphql/relay/base_connection.rb +138 -0
- data/lib/graphql/relay/connection_field.rb +54 -0
- data/lib/graphql/relay/connection_type.rb +25 -0
- data/lib/graphql/relay/edge.rb +22 -0
- data/lib/graphql/relay/edge_type.rb +14 -0
- data/lib/graphql/relay/global_id_resolve.rb +15 -0
- data/lib/graphql/relay/global_node_identification.rb +124 -0
- data/lib/graphql/relay/mutation.rb +146 -0
- data/lib/graphql/relay/page_info.rb +13 -0
- data/lib/graphql/relay/relation_connection.rb +98 -0
- data/lib/graphql/schema.rb +3 -0
- data/lib/graphql/schema/printer.rb +12 -2
- data/lib/graphql/static_validation/message.rb +9 -5
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
- data/lib/graphql/static_validation/rules/arguments_are_defined.rb +1 -1
- data/lib/graphql/static_validation/rules/directives_are_defined.rb +3 -3
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +7 -7
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +4 -4
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +5 -5
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +6 -6
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +17 -9
- data/lib/graphql/static_validation/rules/fragment_types_exist.rb +1 -1
- data/lib/graphql/static_validation/rules/fragments_are_finite.rb +1 -1
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +1 -1
- data/lib/graphql/static_validation/rules/fragments_are_used.rb +17 -6
- data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +1 -1
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +2 -2
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +5 -5
- data/lib/graphql/static_validation/rules/variables_are_input_types.rb +1 -1
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +12 -11
- data/lib/graphql/static_validation/type_stack.rb +33 -2
- data/lib/graphql/static_validation/validation_context.rb +5 -0
- data/lib/graphql/version.rb +1 -1
- data/readme.md +16 -4
- data/spec/graphql/analysis/analyze_query_spec.rb +31 -2
- data/spec/graphql/analysis/query_complexity_spec.rb +24 -0
- data/spec/graphql/argument_spec.rb +1 -1
- data/spec/graphql/define/instance_definable_spec.rb +9 -0
- data/spec/graphql/field_spec.rb +1 -1
- data/spec/graphql/internal_representation/rewrite_spec.rb +3 -3
- data/spec/graphql/language/generation_spec.rb +25 -4
- data/spec/graphql/language/parser_spec.rb +116 -1
- data/spec/graphql/query_spec.rb +10 -0
- data/spec/graphql/relay/array_connection_spec.rb +164 -0
- data/spec/graphql/relay/connection_type_spec.rb +37 -0
- data/spec/graphql/relay/global_node_identification_spec.rb +149 -0
- data/spec/graphql/relay/mutation_spec.rb +55 -0
- data/spec/graphql/relay/page_info_spec.rb +106 -0
- data/spec/graphql/relay/relation_connection_spec.rb +348 -0
- data/spec/graphql/schema/printer_spec.rb +8 -0
- data/spec/graphql/schema/reduce_types_spec.rb +1 -1
- data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +12 -6
- data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +8 -4
- data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +7 -2
- data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +5 -3
- data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +5 -2
- data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +10 -2
- data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +8 -4
- data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +8 -4
- data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +6 -3
- data/spec/spec_helper.rb +7 -0
- data/spec/support/dairy_app.rb +11 -10
- data/spec/support/star_wars_data.rb +65 -58
- data/spec/support/star_wars_schema.rb +192 -54
- metadata +84 -2
@@ -1,76 +1,214 @@
|
|
1
|
-
#
|
2
|
-
# https://github.com/graphql/graphql-js/blob/master/src/__tests__/starWarsSchema.js
|
3
|
-
require_relative "./star_wars_data"
|
1
|
+
# Adapted from graphql-relay-js
|
2
|
+
# https://github.com/graphql/graphql-relay-js/blob/master/src/__tests__/starWarsSchema.js
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
# This object exposes helpers for working with global IDs:
|
5
|
+
# - global id creation & "decrypting"
|
6
|
+
# - a find-object-by-global ID field
|
7
|
+
# - an interface for Relay ObjectTypes to implement
|
8
|
+
# See global_node_identification.rb for the full API.
|
9
|
+
NodeIdentification = GraphQL::Relay::GlobalNodeIdentification.define do
|
10
|
+
object_from_id -> (node_id, ctx) do
|
11
|
+
type_name, id = NodeIdentification.from_global_id(node_id)
|
12
|
+
STAR_WARS_DATA[type_name][id]
|
13
|
+
end
|
8
14
|
|
9
|
-
|
10
|
-
|
11
|
-
|
15
|
+
type_from_object -> (object) do
|
16
|
+
if object == :test_error
|
17
|
+
:not_a_type
|
18
|
+
elsif object.is_a?(Base)
|
19
|
+
BaseType
|
20
|
+
elsif STAR_WARS_DATA["Faction"].values.include?(object)
|
21
|
+
Faction
|
22
|
+
elsif STAR_WARS_DATA["Ship"].values.include?(object)
|
23
|
+
Ship
|
24
|
+
else
|
25
|
+
nil
|
26
|
+
end
|
27
|
+
end
|
12
28
|
end
|
13
29
|
|
14
|
-
|
15
|
-
name
|
16
|
-
|
30
|
+
Ship = GraphQL::ObjectType.define do
|
31
|
+
name "Ship"
|
32
|
+
interfaces [NodeIdentification.interface]
|
33
|
+
global_id_field :id
|
34
|
+
field :name, types.String
|
35
|
+
end
|
17
36
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
37
|
+
BaseType = GraphQL::ObjectType.define do
|
38
|
+
name "Base"
|
39
|
+
interfaces [NodeIdentification.interface]
|
40
|
+
global_id_field :id
|
41
|
+
field :name, types.String
|
42
|
+
field :planet, types.String
|
22
43
|
end
|
23
44
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
field :
|
28
|
-
|
29
|
-
|
30
|
-
type(types[CharacterInterface])
|
31
|
-
description("The friends of the human, or an empty list if they have none.")
|
32
|
-
resolve(GET_FRIENDS)
|
45
|
+
# Use an optional block to add fields to the connection type:
|
46
|
+
BaseConnectionWithTotalCountType = BaseType.define_connection do
|
47
|
+
name "BasesConnectionWithTotalCount"
|
48
|
+
field :totalCount do
|
49
|
+
type types.Int
|
50
|
+
resolve -> (obj, args, ctx) { obj.object.count }
|
33
51
|
end
|
34
|
-
|
35
|
-
field :homePlanet, types.String, "The home planet of the human, or null if unknown."
|
52
|
+
end
|
36
53
|
|
37
|
-
|
54
|
+
class CustomBaseEdge < GraphQL::Relay::Edge
|
55
|
+
def upcased_name
|
56
|
+
node.name.upcase
|
57
|
+
end
|
58
|
+
|
59
|
+
def upcased_parent_name
|
60
|
+
parent.name.upcase
|
61
|
+
end
|
38
62
|
end
|
39
63
|
|
40
|
-
|
41
|
-
name
|
42
|
-
|
43
|
-
field :
|
44
|
-
field :
|
45
|
-
|
46
|
-
type(types[CharacterInterface])
|
47
|
-
description("The friends of the droid, or an empty list if they have none.")
|
48
|
-
resolve(GET_FRIENDS)
|
64
|
+
CustomBaseEdgeType = BaseType.define_edge do
|
65
|
+
name "CustomBaseEdge"
|
66
|
+
field :upcasedName, types.String, property: :upcased_name
|
67
|
+
field :upcasedParentName, types.String, property: :upcased_parent_name
|
68
|
+
field :edgeClassName, types.String do
|
69
|
+
resolve -> (obj, args, ctx) { obj.class.name }
|
49
70
|
end
|
50
|
-
|
51
|
-
field :primaryFunction, types.String, "The primary function of the droid."
|
71
|
+
end
|
52
72
|
|
53
|
-
|
73
|
+
CustomEdgeBaseConnectionType = BaseType.define_connection(edge_class: CustomBaseEdge, edge_type: CustomBaseEdgeType) do
|
74
|
+
name "CustomEdgeBaseConnection"
|
75
|
+
|
76
|
+
field :totalCountTimes100 do
|
77
|
+
type types.Int
|
78
|
+
resolve -> (obj, args, ctx) { obj.object.count * 100 }
|
79
|
+
end
|
54
80
|
end
|
55
81
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
82
|
+
Faction = GraphQL::ObjectType.define do
|
83
|
+
name "Faction"
|
84
|
+
interfaces [NodeIdentification.interface]
|
85
|
+
|
86
|
+
field :id, !types.ID, resolve: GraphQL::Relay::GlobalIdResolve.new(type_name: "Faction", property: :id)
|
87
|
+
field :name, types.String
|
88
|
+
connection :ships, Ship.connection_type do
|
89
|
+
resolve -> (obj, args, ctx) {
|
90
|
+
all_ships = obj.ships.map {|ship_id| STAR_WARS_DATA["Ship"][ship_id] }
|
91
|
+
if args[:nameIncludes]
|
92
|
+
all_ships = all_ships.select { |ship| ship.name.include?(args[:nameIncludes])}
|
93
|
+
end
|
94
|
+
all_ships
|
95
|
+
}
|
96
|
+
# You can define arguments here and use them in the connection
|
97
|
+
argument :nameIncludes, types.String
|
98
|
+
end
|
99
|
+
connection :shipsWithMaxPageSize, Ship.connection_type, max_page_size: 2 do
|
100
|
+
resolve -> (obj, args, ctx) {
|
101
|
+
all_ships = obj.ships.map {|ship_id| STAR_WARS_DATA["Ship"][ship_id] }
|
102
|
+
if args[:nameIncludes]
|
103
|
+
all_ships = all_ships.select { |ship| ship.name.include?(args[:nameIncludes])}
|
104
|
+
end
|
105
|
+
all_ships
|
106
|
+
}
|
107
|
+
# You can define arguments here and use them in the connection
|
108
|
+
argument :nameIncludes, types.String
|
109
|
+
end
|
110
|
+
|
111
|
+
connection :bases, BaseConnectionWithTotalCountType do
|
112
|
+
# Resolve field should return an Array, the Connection
|
113
|
+
# will do the rest!
|
114
|
+
resolve -> (obj, args, ctx) {
|
115
|
+
all_bases = Base.where(id: obj.bases)
|
116
|
+
if args[:nameIncludes]
|
117
|
+
all_bases = all_bases.where("name LIKE ?", "%#{args[:nameIncludes]}%")
|
118
|
+
end
|
119
|
+
all_bases
|
120
|
+
}
|
121
|
+
argument :nameIncludes, types.String
|
122
|
+
end
|
123
|
+
|
124
|
+
connection :basesClone, BaseType.connection_type
|
125
|
+
connection :basesByName, BaseType.connection_type, property: :bases do
|
126
|
+
argument :order, types.String, default_value: "name"
|
127
|
+
resolve -> (obj, args, ctx) {
|
128
|
+
if args[:order].present?
|
129
|
+
obj.bases.order(args[:order])
|
130
|
+
else
|
131
|
+
obj.bases
|
132
|
+
end
|
133
|
+
}
|
63
134
|
end
|
135
|
+
|
136
|
+
connection :basesWithMaxLimitRelation, BaseType.connection_type, max_page_size: 2 do
|
137
|
+
resolve -> (object, args, context) { Base.all }
|
138
|
+
end
|
139
|
+
|
140
|
+
connection :basesWithMaxLimitArray, BaseType.connection_type, max_page_size: 2 do
|
141
|
+
resolve -> (object, args, context) { Base.all.to_a }
|
142
|
+
end
|
143
|
+
|
144
|
+
connection :basesAsSequelDataset, BaseConnectionWithTotalCountType do
|
145
|
+
argument :nameIncludes, types.String
|
146
|
+
resolve -> (obj, args, ctx) {
|
147
|
+
all_bases = SequelBase.where(faction_id: obj.id)
|
148
|
+
if args[:nameIncludes]
|
149
|
+
all_bases = all_bases.where("name LIKE ?", "%#{args[:nameIncludes]}%")
|
150
|
+
end
|
151
|
+
all_bases
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
connection :basesWithCustomEdge, CustomEdgeBaseConnectionType, property: :bases
|
156
|
+
end
|
157
|
+
|
158
|
+
# Define a mutation. It will also:
|
159
|
+
# - define a derived InputObjectType
|
160
|
+
# - define a derived ObjectType (for return)
|
161
|
+
# - define a field, accessible from {Mutation#field}
|
162
|
+
#
|
163
|
+
# The resolve proc takes `inputs, ctx`, where:
|
164
|
+
# - `inputs` has the keys defined with `input_field`
|
165
|
+
# - `ctx` is the Query context (like normal fields)
|
166
|
+
#
|
167
|
+
# Notice that you leave out clientMutationId.
|
168
|
+
IntroduceShipMutation = GraphQL::Relay::Mutation.define do
|
169
|
+
# Used as the root for derived types:
|
170
|
+
name "IntroduceShip"
|
171
|
+
description "Add a ship to this faction"
|
172
|
+
|
173
|
+
# Nested under `input` in the query:
|
174
|
+
input_field :shipName, !types.String
|
175
|
+
input_field :factionId, !types.ID
|
176
|
+
|
177
|
+
# Result may have access to these fields:
|
178
|
+
return_field :ship, Ship
|
179
|
+
return_field :faction, Faction
|
180
|
+
|
181
|
+
# Here's the mutation operation:
|
182
|
+
resolve -> (inputs, ctx) {
|
183
|
+
faction_id = inputs["factionId"]
|
184
|
+
ship = STAR_WARS_DATA.create_ship(inputs["shipName"], faction_id)
|
185
|
+
faction = STAR_WARS_DATA["Faction"][faction_id]
|
186
|
+
{ ship: ship, faction: faction }
|
187
|
+
}
|
64
188
|
end
|
65
189
|
|
190
|
+
QueryType = GraphQL::ObjectType.define do
|
191
|
+
name "Query"
|
192
|
+
field :rebels, Faction do
|
193
|
+
resolve -> (obj, args, ctx) { STAR_WARS_DATA["Faction"]["1"]}
|
194
|
+
end
|
66
195
|
|
67
|
-
|
68
|
-
|
69
|
-
field :hero do
|
70
|
-
argument :episode, EpisodeEnum, "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode"
|
71
|
-
resolve -> (obj, args, ctx) { args["episode"] == 5 ? luke : artoo }
|
196
|
+
field :empire, Faction do
|
197
|
+
resolve -> (obj, args, ctx) { STAR_WARS_DATA["Faction"]["2"]}
|
72
198
|
end
|
73
199
|
|
74
|
-
field :
|
75
|
-
|
200
|
+
field :largestBase, BaseType do
|
201
|
+
resolve -> (obj, args, ctx) { Base.find(3) }
|
202
|
+
end
|
203
|
+
|
204
|
+
field :node, field: NodeIdentification.field
|
205
|
+
end
|
206
|
+
|
207
|
+
MutationType = GraphQL::ObjectType.define do
|
208
|
+
name "Mutation"
|
209
|
+
# The mutation object exposes a field:
|
210
|
+
field :introduceShip, field: IntroduceShipMutation.field
|
76
211
|
end
|
212
|
+
|
213
|
+
StarWarsSchema = GraphQL::Schema.new(query: QueryType, mutation: MutationType)
|
214
|
+
StarWarsSchema.node_identification = NodeIdentification
|
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.
|
4
|
+
version: 0.18.0
|
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-
|
11
|
+
date: 2016-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: codeclimate-test-reporter
|
@@ -178,6 +178,62 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '11.0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: activerecord
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: appraisal
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: sequel
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: sqlite3
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
181
237
|
description: A GraphQL server implementation for Ruby. Includes schema definition,
|
182
238
|
query parsing, static validation, type definition, and query execution.
|
183
239
|
email:
|
@@ -200,7 +256,9 @@ files:
|
|
200
256
|
- lib/graphql/boolean_type.rb
|
201
257
|
- lib/graphql/define.rb
|
202
258
|
- lib/graphql/define/assign_argument.rb
|
259
|
+
- lib/graphql/define/assign_connection.rb
|
203
260
|
- lib/graphql/define/assign_enum_value.rb
|
261
|
+
- lib/graphql/define/assign_global_id_field.rb
|
204
262
|
- lib/graphql/define/assign_object_field.rb
|
205
263
|
- lib/graphql/define/assignment_dictionary.rb
|
206
264
|
- lib/graphql/define/defined_object_proxy.rb
|
@@ -271,6 +329,18 @@ files:
|
|
271
329
|
- lib/graphql/query/type_resolver.rb
|
272
330
|
- lib/graphql/query/variable_validation_error.rb
|
273
331
|
- lib/graphql/query/variables.rb
|
332
|
+
- lib/graphql/relay.rb
|
333
|
+
- lib/graphql/relay/array_connection.rb
|
334
|
+
- lib/graphql/relay/base_connection.rb
|
335
|
+
- lib/graphql/relay/connection_field.rb
|
336
|
+
- lib/graphql/relay/connection_type.rb
|
337
|
+
- lib/graphql/relay/edge.rb
|
338
|
+
- lib/graphql/relay/edge_type.rb
|
339
|
+
- lib/graphql/relay/global_id_resolve.rb
|
340
|
+
- lib/graphql/relay/global_node_identification.rb
|
341
|
+
- lib/graphql/relay/mutation.rb
|
342
|
+
- lib/graphql/relay/page_info.rb
|
343
|
+
- lib/graphql/relay/relation_connection.rb
|
274
344
|
- lib/graphql/scalar_type.rb
|
275
345
|
- lib/graphql/schema.rb
|
276
346
|
- lib/graphql/schema/catchall_middleware.rb
|
@@ -352,6 +422,12 @@ files:
|
|
352
422
|
- spec/graphql/query/type_resolver_spec.rb
|
353
423
|
- spec/graphql/query/variables_spec.rb
|
354
424
|
- spec/graphql/query_spec.rb
|
425
|
+
- spec/graphql/relay/array_connection_spec.rb
|
426
|
+
- spec/graphql/relay/connection_type_spec.rb
|
427
|
+
- spec/graphql/relay/global_node_identification_spec.rb
|
428
|
+
- spec/graphql/relay/mutation_spec.rb
|
429
|
+
- spec/graphql/relay/page_info_spec.rb
|
430
|
+
- spec/graphql/relay/relation_connection_spec.rb
|
355
431
|
- spec/graphql/scalar_type_spec.rb
|
356
432
|
- spec/graphql/schema/catchall_middleware_spec.rb
|
357
433
|
- spec/graphql/schema/middleware_chain_spec.rb
|
@@ -452,6 +528,12 @@ test_files:
|
|
452
528
|
- spec/graphql/query/type_resolver_spec.rb
|
453
529
|
- spec/graphql/query/variables_spec.rb
|
454
530
|
- spec/graphql/query_spec.rb
|
531
|
+
- spec/graphql/relay/array_connection_spec.rb
|
532
|
+
- spec/graphql/relay/connection_type_spec.rb
|
533
|
+
- spec/graphql/relay/global_node_identification_spec.rb
|
534
|
+
- spec/graphql/relay/mutation_spec.rb
|
535
|
+
- spec/graphql/relay/page_info_spec.rb
|
536
|
+
- spec/graphql/relay/relation_connection_spec.rb
|
455
537
|
- spec/graphql/scalar_type_spec.rb
|
456
538
|
- spec/graphql/schema/catchall_middleware_spec.rb
|
457
539
|
- spec/graphql/schema/middleware_chain_spec.rb
|