graphql 1.4.0 → 1.4.1

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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/lib/graphql/introspection/schema_type.rb +3 -3
  3. data/lib/graphql/language/nodes.rb +1 -1
  4. data/lib/graphql/query.rb +39 -27
  5. data/lib/graphql/query/executor.rb +1 -1
  6. data/lib/graphql/query/variables.rb +21 -28
  7. data/lib/graphql/relay/connection_type.rb +2 -0
  8. data/lib/graphql/relay/relation_connection.rb +8 -2
  9. data/lib/graphql/schema.rb +3 -0
  10. data/lib/graphql/schema/warden.rb +9 -0
  11. data/lib/graphql/static_validation/rules/mutation_root_exists.rb +1 -1
  12. data/lib/graphql/static_validation/rules/subscription_root_exists.rb +1 -1
  13. data/lib/graphql/version.rb +1 -1
  14. data/spec/graphql/analysis/analyze_query_spec.rb +15 -15
  15. data/spec/graphql/analysis/field_usage_spec.rb +1 -1
  16. data/spec/graphql/analysis/max_query_complexity_spec.rb +8 -8
  17. data/spec/graphql/analysis/max_query_depth_spec.rb +7 -7
  18. data/spec/graphql/analysis/query_complexity_spec.rb +2 -2
  19. data/spec/graphql/analysis/query_depth_spec.rb +1 -1
  20. data/spec/graphql/base_type_spec.rb +19 -11
  21. data/spec/graphql/directive_spec.rb +1 -1
  22. data/spec/graphql/enum_type_spec.rb +2 -2
  23. data/spec/graphql/execution/typecast_spec.rb +19 -19
  24. data/spec/graphql/execution_error_spec.rb +1 -1
  25. data/spec/graphql/field_spec.rb +15 -7
  26. data/spec/graphql/id_type_spec.rb +1 -1
  27. data/spec/graphql/input_object_type_spec.rb +16 -16
  28. data/spec/graphql/interface_type_spec.rb +6 -6
  29. data/spec/graphql/internal_representation/rewrite_spec.rb +34 -34
  30. data/spec/graphql/introspection/directive_type_spec.rb +1 -1
  31. data/spec/graphql/introspection/input_value_type_spec.rb +2 -2
  32. data/spec/graphql/introspection/introspection_query_spec.rb +1 -1
  33. data/spec/graphql/introspection/schema_type_spec.rb +2 -2
  34. data/spec/graphql/introspection/type_type_spec.rb +1 -1
  35. data/spec/graphql/language/parser_spec.rb +1 -1
  36. data/spec/graphql/non_null_type_spec.rb +3 -3
  37. data/spec/graphql/object_type_spec.rb +8 -8
  38. data/spec/graphql/query/executor_spec.rb +4 -4
  39. data/spec/graphql/query/variables_spec.rb +20 -4
  40. data/spec/graphql/query_spec.rb +20 -2
  41. data/spec/graphql/relay/connection_type_spec.rb +1 -1
  42. data/spec/graphql/relay/mutation_spec.rb +9 -9
  43. data/spec/graphql/relay/node_spec.rb +8 -8
  44. data/spec/graphql/relay/relation_connection_spec.rb +24 -6
  45. data/spec/graphql/schema/catchall_middleware_spec.rb +3 -3
  46. data/spec/graphql/schema/reduce_types_spec.rb +9 -9
  47. data/spec/graphql/schema/type_expression_spec.rb +3 -3
  48. data/spec/graphql/schema/validation_spec.rb +1 -1
  49. data/spec/graphql/schema/warden_spec.rb +79 -0
  50. data/spec/graphql/schema_spec.rb +2 -2
  51. data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +1 -1
  52. data/spec/graphql/static_validation/type_stack_spec.rb +2 -2
  53. data/spec/graphql/static_validation/validator_spec.rb +2 -2
  54. data/spec/graphql/union_type_spec.rb +2 -2
  55. data/spec/spec_helper.rb +1 -1
  56. data/spec/support/dummy/data.rb +27 -0
  57. data/spec/support/dummy/schema.rb +369 -0
  58. data/spec/support/star_wars/data.rb +81 -0
  59. data/spec/support/star_wars/schema.rb +250 -0
  60. data/spec/support/static_validation_helpers.rb +2 -2
  61. metadata +10 -10
  62. data/spec/support/dairy_app.rb +0 -369
  63. data/spec/support/dairy_data.rb +0 -26
  64. data/spec/support/star_wars_data.rb +0 -80
  65. data/spec/support/star_wars_schema.rb +0 -242
@@ -2,8 +2,8 @@
2
2
  require "spec_helper"
3
3
 
4
4
  describe GraphQL::InternalRepresentation::Rewrite do
5
- let(:validator) { GraphQL::StaticValidation::Validator.new(schema: DummySchema) }
6
- let(:query) { GraphQL::Query.new(DummySchema, query_string) }
5
+ let(:validator) { GraphQL::StaticValidation::Validator.new(schema: Dummy::Schema) }
6
+ let(:query) { GraphQL::Query.new(Dummy::Schema, query_string) }
7
7
  let(:rewrite_result) {
8
8
  validator.validate(query)[:irep]
9
9
  }
@@ -24,18 +24,18 @@ describe GraphQL::InternalRepresentation::Rewrite do
24
24
  it "produces a tree of nodes" do
25
25
  op_node = rewrite_result["getCheeses"]
26
26
 
27
- root_children = op_node.typed_children[DairyAppQueryType]
27
+ root_children = op_node.typed_children[Dummy::DairyAppQueryType]
28
28
  assert_equal 2, root_children.length
29
- assert_equal DairyAppQueryType, op_node.return_type
29
+ assert_equal Dummy::DairyAppQueryType, op_node.return_type
30
30
  first_field = root_children.values.first
31
- assert_equal 3, first_field.typed_children[CheeseType].length
32
- assert_equal DairyAppQueryType, first_field.owner_type
33
- assert_equal CheeseType, first_field.return_type
31
+ assert_equal 3, first_field.typed_children[Dummy::CheeseType].length
32
+ assert_equal Dummy::DairyAppQueryType, first_field.owner_type
33
+ assert_equal Dummy::CheeseType, first_field.return_type
34
34
 
35
35
  second_field = root_children.values.last
36
- assert_equal 1, second_field.typed_children[CheeseType].length
37
- assert_equal DairyAppQueryType.get_field("cheese"), second_field.definition
38
- assert_equal CheeseType, second_field.return_type
36
+ assert_equal 1, second_field.typed_children[Dummy::CheeseType].length
37
+ assert_equal Dummy::DairyAppQueryType.get_field("cheese"), second_field.definition
38
+ assert_equal Dummy::CheeseType, second_field.return_type
39
39
  assert second_field.inspect.is_a?(String)
40
40
  end
41
41
  end
@@ -50,8 +50,8 @@ describe GraphQL::InternalRepresentation::Rewrite do
50
50
  |}
51
51
 
52
52
  it "gets dynamic field definitions" do
53
- cheese_field = rewrite_result[nil].typed_children[DairyAppQueryType]["cheese"]
54
- typename_field = cheese_field.typed_children[CheeseType]["typename"]
53
+ cheese_field = rewrite_result[nil].typed_children[Dummy::DairyAppQueryType]["cheese"]
54
+ typename_field = cheese_field.typed_children[Dummy::CheeseType]["typename"]
55
55
  assert_equal "__typename", typename_field.definition.name
56
56
  assert_equal "__typename", typename_field.definition_name
57
57
  end
@@ -128,41 +128,41 @@ describe GraphQL::InternalRepresentation::Rewrite do
128
128
  it "puts all fragment members as children" do
129
129
  op_node = rewrite_result[nil]
130
130
 
131
- cheese_field = op_node.typed_children[DairyAppQueryType]["cheese"]
132
- assert_equal ["id1", "id2", "fatContent", "similarCow", "flavor"], cheese_field.typed_children[CheeseType].keys
133
- assert_equal ["fatContent", "origin"], cheese_field.typed_children[EdibleInterface].keys
131
+ cheese_field = op_node.typed_children[Dummy::DairyAppQueryType]["cheese"]
132
+ assert_equal ["id1", "id2", "fatContent", "similarCow", "flavor"], cheese_field.typed_children[Dummy::CheeseType].keys
133
+ assert_equal ["fatContent", "origin"], cheese_field.typed_children[Dummy::EdibleInterface].keys
134
134
  # Merge:
135
- similar_cow_field = cheese_field.typed_children[CheeseType]["similarCow"]
136
- assert_equal ["similarCowSource", "fatContent", "similarCheese", "id"], similar_cow_field.typed_children[CheeseType].keys
135
+ similar_cow_field = cheese_field.typed_children[Dummy::CheeseType]["similarCow"]
136
+ assert_equal ["similarCowSource", "fatContent", "similarCheese", "id"], similar_cow_field.typed_children[Dummy::CheeseType].keys
137
137
  # Deep merge:
138
- similar_sheep_field = similar_cow_field.typed_children[CheeseType]["similarCheese"]
139
- assert_equal ["flavor", "source"], similar_sheep_field.typed_children[CheeseType].keys
138
+ similar_sheep_field = similar_cow_field.typed_children[Dummy::CheeseType]["similarCheese"]
139
+ assert_equal ["flavor", "source"], similar_sheep_field.typed_children[Dummy::CheeseType].keys
140
140
 
141
- edible_origin_node = cheese_field.typed_children[EdibleInterface]["origin"]
142
- assert_equal EdibleInterface.get_field("origin"), edible_origin_node.definition
143
- assert_equal EdibleInterface, edible_origin_node.owner_type
141
+ edible_origin_node = cheese_field.typed_children[Dummy::EdibleInterface]["origin"]
142
+ assert_equal Dummy::EdibleInterface.get_field("origin"), edible_origin_node.definition
143
+ assert_equal Dummy::EdibleInterface, edible_origin_node.owner_type
144
144
 
145
- edible_fat_content_node = cheese_field.typed_children[EdibleInterface]["fatContent"]
146
- assert_equal EdibleInterface.get_field("fatContent"), edible_fat_content_node.definition
147
- assert_equal EdibleInterface, edible_fat_content_node.owner_type
145
+ edible_fat_content_node = cheese_field.typed_children[Dummy::EdibleInterface]["fatContent"]
146
+ assert_equal Dummy::EdibleInterface.get_field("fatContent"), edible_fat_content_node.definition
147
+ assert_equal Dummy::EdibleInterface, edible_fat_content_node.owner_type
148
148
 
149
- cheese_fat_content_node = cheese_field.typed_children[CheeseType]["fatContent"]
150
- assert_equal CheeseType.get_field("fatContent"), cheese_fat_content_node.definition
151
- assert_equal CheeseType, cheese_fat_content_node.owner_type
149
+ cheese_fat_content_node = cheese_field.typed_children[Dummy::CheeseType]["fatContent"]
150
+ assert_equal Dummy::CheeseType.get_field("fatContent"), cheese_fat_content_node.definition
151
+ assert_equal Dummy::CheeseType, cheese_fat_content_node.owner_type
152
152
 
153
- cheese_flavor_node = cheese_field.typed_children[CheeseType]["flavor"]
154
- assert_equal CheeseType.get_field("flavor"), cheese_flavor_node.definition
155
- assert_equal CheeseType, cheese_flavor_node.owner_type
153
+ cheese_flavor_node = cheese_field.typed_children[Dummy::CheeseType]["flavor"]
154
+ assert_equal Dummy::CheeseType.get_field("flavor"), cheese_flavor_node.definition
155
+ assert_equal Dummy::CheeseType, cheese_flavor_node.owner_type
156
156
 
157
157
 
158
158
  # nested spread inside fragment definition:
159
- cheese_2_field = op_node.typed_children[DairyAppQueryType]["cheese2"].typed_children[CheeseType]["similarCheese"]
160
- assert_equal ["id", "fatContent"], cheese_2_field.typed_children[CheeseType].keys
159
+ cheese_2_field = op_node.typed_children[Dummy::DairyAppQueryType]["cheese2"].typed_children[Dummy::CheeseType]["similarCheese"]
160
+ assert_equal ["id", "fatContent"], cheese_2_field.typed_children[Dummy::CheeseType].keys
161
161
  end
162
162
  end
163
163
 
164
164
  describe "nested fields on typed fragments" do
165
- let(:result) { DummySchema.execute(query_string) }
165
+ let(:result) { Dummy::Schema.execute(query_string) }
166
166
  let(:query_string) {%|
167
167
  {
168
168
  allDairy {
@@ -17,7 +17,7 @@ describe GraphQL::Introspection::DirectiveType do
17
17
  }
18
18
  }
19
19
  |}
20
- let(:result) { DummySchema.execute(query_string) }
20
+ let(:result) { Dummy::Schema.execute(query_string) }
21
21
 
22
22
  it "shows directive info " do
23
23
  expected = { "data" => {
@@ -18,7 +18,7 @@ describe GraphQL::Introspection::InputValueType do
18
18
  }
19
19
  }
20
20
  |}
21
- let(:result) { DummySchema.execute(query_string) }
21
+ let(:result) { Dummy::Schema.execute(query_string) }
22
22
 
23
23
  it "exposes metadata about input objects, giving extra quotes for strings" do
24
24
  expected = { "data" => {
@@ -42,7 +42,7 @@ describe GraphQL::Introspection::InputValueType do
42
42
  end
43
43
 
44
44
  let(:cheese_type) {
45
- DummySchema.execute(%|
45
+ Dummy::Schema.execute(%|
46
46
  {
47
47
  __type(name: "Cheese") {
48
48
  fields {
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
 
4
4
  describe "GraphQL::Introspection::INTROSPECTION_QUERY" do
5
5
  let(:query_string) { GraphQL::Introspection::INTROSPECTION_QUERY }
6
- let(:result) { DummySchema.execute(query_string) }
6
+ let(:result) { Dummy::Schema.execute(query_string) }
7
7
 
8
8
  it "runs" do
9
9
  assert(result["data"])
@@ -11,12 +11,12 @@ describe GraphQL::Introspection::SchemaType do
11
11
  }
12
12
  }
13
13
  |}
14
- let(:result) { DummySchema.execute(query_string) }
14
+ let(:result) { Dummy::Schema.execute(query_string) }
15
15
 
16
16
  it "exposes the schema" do
17
17
  expected = { "data" => {
18
18
  "__schema" => {
19
- "types" => DummySchema.types.values.map { |t| t.name.nil? ? (p t; raise("no name for #{t}")) : {"name" => t.name} },
19
+ "types" => Dummy::Schema.types.values.map { |t| t.name.nil? ? (p t; raise("no name for #{t}")) : {"name" => t.name} },
20
20
  "queryType"=>{
21
21
  "fields"=>[
22
22
  {"name"=>"allDairy"},
@@ -12,7 +12,7 @@ describe GraphQL::Introspection::TypeType do
12
12
  missingType: __type(name: "NotAType") { name }
13
13
  }
14
14
  |}
15
- let(:result) { DummySchema.execute(query_string, context: {}, variables: {"cheeseId" => 2}) }
15
+ let(:result) { Dummy::Schema.execute(query_string, context: {}, variables: {"cheeseId" => 2}) }
16
16
  let(:cheese_fields) {[
17
17
  {"name"=>"deeplyNullableCheese", "isDeprecated" => false, "type"=>{ "kind" => "OBJECT", "name" => "Cheese", "ofType" => nil}},
18
18
  {"name"=>"flavor", "isDeprecated" => false, "type" => { "kind" => "NON_NULL", "name" => nil, "ofType" => { "name" => "String"}}},
@@ -38,7 +38,7 @@ describe GraphQL::Language::Parser do
38
38
  end
39
39
 
40
40
  it "parses the test schema" do
41
- schema = DummySchema
41
+ schema = Dummy::Schema
42
42
  schema_string = GraphQL::Schema::Printer.print_schema(schema)
43
43
  document = subject.parse(schema_string)
44
44
  assert_equal schema_string, document.to_query_string
@@ -5,7 +5,7 @@ describe GraphQL::NonNullType do
5
5
  describe "when a non-null field returns null" do
6
6
  it "nulls out the parent selection" do
7
7
  query_string = %|{ cow { name cantBeNullButIs } }|
8
- result = DummySchema.execute(query_string)
8
+ result = Dummy::Schema.execute(query_string)
9
9
  assert_equal({"cow" => nil }, result["data"])
10
10
  assert_equal([{"message"=>"Cannot return null for non-nullable field Cow.cantBeNullButIs"}], result["errors"])
11
11
  end
@@ -24,14 +24,14 @@ describe GraphQL::NonNullType do
24
24
  }
25
25
  }
26
26
  |
27
- result = DummySchema.execute(query_string)
27
+ result = Dummy::Schema.execute(query_string)
28
28
  assert_equal(nil, result["data"])
29
29
  assert_equal([{"message"=>"Cannot return null for non-nullable field DeepNonNull.nonNullInt"}], result["errors"])
30
30
  end
31
31
 
32
32
  describe "when type_error is configured to raise an error" do
33
33
  it "crashes query execution" do
34
- raise_schema = DummySchema.redefine {
34
+ raise_schema = Dummy::Schema.redefine {
35
35
  type_error ->(type_err, ctx) {
36
36
  raise type_err
37
37
  }
@@ -2,7 +2,7 @@
2
2
  require "spec_helper"
3
3
 
4
4
  describe GraphQL::ObjectType do
5
- let(:type) { CheeseType }
5
+ let(:type) { Dummy::CheeseType }
6
6
 
7
7
  it "has a name" do
8
8
  assert_equal("Cheese", type.name)
@@ -16,16 +16,16 @@ describe GraphQL::ObjectType do
16
16
  end
17
17
 
18
18
  it "may have interfaces" do
19
- assert_equal([EdibleInterface, AnimalProductInterface, LocalProductInterface], type.interfaces)
19
+ assert_equal([Dummy::EdibleInterface, Dummy::AnimalProductInterface, Dummy::LocalProductInterface], type.interfaces)
20
20
  end
21
21
 
22
22
  it "accepts fields definition" do
23
- last_produced_dairy = GraphQL::Field.define(name: :last_produced_dairy, type: DairyProductUnion)
23
+ last_produced_dairy = GraphQL::Field.define(name: :last_produced_dairy, type: Dummy::DairyProductUnion)
24
24
  cow_type = GraphQL::ObjectType.define(name: "Cow", fields: [last_produced_dairy])
25
25
  assert_equal([last_produced_dairy], cow_type.fields)
26
26
  end
27
27
 
28
- describe '#get_field ' do
28
+ describe '#get_field' do
29
29
  it "exposes fields" do
30
30
  field = type.get_field("id")
31
31
  assert_equal(GraphQL::TypeKinds::NON_NULL, field.type.kind)
@@ -33,15 +33,15 @@ describe GraphQL::ObjectType do
33
33
  end
34
34
 
35
35
  it "exposes defined field property" do
36
- field_without_prop = CheeseType.get_field("flavor")
37
- field_with_prop = CheeseType.get_field("fatContent")
36
+ field_without_prop = Dummy::CheeseType.get_field("flavor")
37
+ field_with_prop = Dummy::CheeseType.get_field("fatContent")
38
38
  assert_equal(field_without_prop.property, nil)
39
39
  assert_equal(field_with_prop.property, :fat_content)
40
40
  end
41
41
 
42
42
  it "looks up from interfaces" do
43
- field_from_self = CheeseType.get_field("fatContent")
44
- field_from_iface = MilkType.get_field("fatContent")
43
+ field_from_self = Dummy::CheeseType.get_field("fatContent")
44
+ field_from_iface = Dummy::MilkType.get_field("fatContent")
45
45
  assert_equal(field_from_self.property, :fat_content)
46
46
  assert_equal(field_from_iface.property, nil)
47
47
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
 
4
4
  describe GraphQL::Query::Executor do
5
5
  let(:operation_name) { nil }
6
- let(:schema) { DummySchema }
6
+ let(:schema) { Dummy::Schema }
7
7
  let(:variables) { {"cheeseId" => 2} }
8
8
  let(:query) { GraphQL::Query.new(
9
9
  schema,
@@ -77,16 +77,16 @@ describe GraphQL::Query::Executor do
77
77
  DummyQueryType = GraphQL::ObjectType.define do
78
78
  name "Query"
79
79
  field :dairy do
80
- type DairyType
80
+ type Dummy::DairyType
81
81
  resolve ->(t, a, c) {
82
82
  raise if resolved
83
83
  resolved = true
84
- DAIRY
84
+ Dummy::DAIRY
85
85
  }
86
86
  end
87
87
  end
88
88
 
89
- GraphQL::Schema.define(query: DummyQueryType, mutation: MutationType, resolve_type: :pass, id_from_object: :pass)
89
+ GraphQL::Schema.define(query: DummyQueryType, mutation: Dummy::DairyAppMutationType, resolve_type: :pass, id_from_object: :pass)
90
90
  }
91
91
  let(:variables) { nil }
92
92
  let(:query_string) { %|
@@ -3,14 +3,19 @@ require "spec_helper"
3
3
 
4
4
  describe GraphQL::Query::Variables do
5
5
  let(:query_string) {%|
6
- query getCheese($animals: [DairyAnimal!], $int: Int, $intWithDefault: Int = 10) {
6
+ query getCheese(
7
+ $animals: [DairyAnimal!],
8
+ $intDefaultNull: Int = null,
9
+ $int: Int,
10
+ $intWithDefault: Int = 10)
11
+ {
7
12
  cheese(id: 1) {
8
13
  similarCheese(source: $animals)
9
14
  }
10
15
  }
11
16
  |}
12
17
  let(:ast_variables) { GraphQL.parse(query_string).definitions.first.variables }
13
- let(:schema) { DummySchema }
18
+ let(:schema) { Dummy::Schema }
14
19
  let(:variables) { GraphQL::Query::Variables.new(
15
20
  schema,
16
21
  GraphQL::Schema::Warden.new(schema.default_mask, schema: schema, context: nil),
@@ -57,7 +62,7 @@ describe GraphQL::Query::Variables do
57
62
  end
58
63
  end
59
64
 
60
- describe "when a nullable list has a null in it" do
65
+ describe "when a non-nullable list has a null in it" do
61
66
  let(:provided_variables) { { "ids" => [nil] } }
62
67
  it "returns an error" do
63
68
  assert_equal 1, result["errors"].length
@@ -71,13 +76,24 @@ describe GraphQL::Query::Variables do
71
76
  {"int" => nil, "intWithDefault" => nil}
72
77
  }
73
78
 
74
- it "null variable" do
79
+ it "preserves explicit null" do
75
80
  assert_equal nil, variables["int"]
81
+ assert_equal true, variables.key?("int")
82
+ end
83
+
84
+ it "doesn't contain variables that weren't present" do
85
+ assert_equal nil, variables["animals"]
86
+ assert_equal false, variables.key?("animals")
76
87
  end
77
88
 
78
89
  it "preserves explicit null when variable has a default value" do
79
90
  assert_equal nil, variables["intWithDefault"]
80
91
  end
92
+
93
+ it "uses null default value" do
94
+ assert_equal nil, variables["intDefaultNull"]
95
+ assert_equal true, variables.key?("intDefaultNull")
96
+ end
81
97
  end
82
98
  end
83
99
  end
@@ -32,7 +32,7 @@ describe GraphQL::Query do
32
32
  let(:operation_name) { nil }
33
33
  let(:max_depth) { nil }
34
34
  let(:query_variables) { {"cheeseId" => 2} }
35
- let(:schema) { DummySchema }
35
+ let(:schema) { Dummy::Schema }
36
36
  let(:document) { GraphQL.parse(query_string) }
37
37
 
38
38
  let(:query) { GraphQL::Query.new(
@@ -132,7 +132,7 @@ describe GraphQL::Query do
132
132
  end
133
133
 
134
134
  let(:schema) {
135
- DummySchema.redefine {
135
+ Dummy::Schema.redefine {
136
136
  instrument(:query, Instrumenter)
137
137
  }
138
138
  }
@@ -334,6 +334,24 @@ describe GraphQL::Query do
334
334
  end
335
335
  end
336
336
 
337
+ describe "when they are non-null and provided a null value" do
338
+ let(:query_variables) { { "cheeseId" => nil } }
339
+
340
+ it "raises an error" do
341
+ expected = {
342
+ "errors" => [
343
+ {
344
+ "message" => "Variable cheeseId of type Int! was provided invalid value",
345
+ "locations" => [{"line" => 2, "column" => 23}],
346
+ "value" => nil,
347
+ "problems" => [{ "path" => [], "explanation" => "Expected value to not be null" }]
348
+ }
349
+ ]
350
+ }
351
+ assert_equal(expected, result)
352
+ end
353
+ end
354
+
337
355
  describe "when they're a string" do
338
356
  let(:query_variables) { '{ "var" : 1 }' }
339
357
  it "raises an error" do
@@ -31,7 +31,7 @@ describe GraphQL::Relay::ConnectionType do
31
31
  assert_equal 'basesWithCustomEdge', bases["fieldName"]
32
32
  assert_equal ["YAVIN", "ECHO BASE", "SECRET HIDEOUT"] , bases["edges"].map { |e| e["upcasedName"] }
33
33
  assert_equal ["Yavin", "Echo Base", "Secret Hideout"] , bases["edges"].map { |e| e["node"]["name"] }
34
- assert_equal ["CustomBaseEdge"] , bases["edges"].map { |e| e["edgeClassName"] }.uniq
34
+ assert_equal ["StarWars::CustomBaseEdge"] , bases["edges"].map { |e| e["edgeClassName"] }.uniq
35
35
  upcased_rebels_name = "ALLIANCE TO RESTORE THE REPUBLIC"
36
36
  assert_equal [upcased_rebels_name] , bases["edges"].map { |e| e["upcasedParentName"] }.uniq
37
37
  end
@@ -22,8 +22,8 @@ describe GraphQL::Relay::Mutation do
22
22
  |}
23
23
 
24
24
  after do
25
- STAR_WARS_DATA["Ship"].delete("9")
26
- STAR_WARS_DATA["Faction"]["1"].ships.delete("9")
25
+ StarWars::DATA["Ship"].delete("9")
26
+ StarWars::DATA["Faction"]["1"].ships.delete("9")
27
27
  end
28
28
 
29
29
  it "supports null values" do
@@ -38,7 +38,7 @@ describe GraphQL::Relay::Mutation do
38
38
  "id" => GraphQL::Schema::UniqueWithinType.encode("Ship", "9"),
39
39
  },
40
40
  },
41
- "faction" => {"name" => STAR_WARS_DATA["Faction"]["1"].name }
41
+ "faction" => {"name" => StarWars::DATA["Faction"]["1"].name }
42
42
  }
43
43
  }}
44
44
  assert_equal(expected, result)
@@ -60,7 +60,7 @@ describe GraphQL::Relay::Mutation do
60
60
  "id" => GraphQL::Schema::UniqueWithinType.encode("Ship", "9"),
61
61
  },
62
62
  },
63
- "faction" => {"name" => STAR_WARS_DATA["Faction"]["1"].name }
63
+ "faction" => {"name" => StarWars::DATA["Faction"]["1"].name }
64
64
  }
65
65
  }}
66
66
  assert_equal(expected, result)
@@ -73,14 +73,14 @@ describe GraphQL::Relay::Mutation do
73
73
  end
74
74
 
75
75
  it "applies the description to the derived field" do
76
- assert_equal "Add a ship to this faction", IntroduceShipMutation.field.description
76
+ assert_equal "Add a ship to this faction", StarWars::IntroduceShipMutation.field.description
77
77
  end
78
78
 
79
79
  it "inserts itself into the derived objects' metadata" do
80
- assert_equal IntroduceShipMutation, IntroduceShipMutation.field.mutation
81
- assert_equal IntroduceShipMutation, IntroduceShipMutation.return_type.mutation
82
- assert_equal IntroduceShipMutation, IntroduceShipMutation.input_type.mutation
83
- assert_equal IntroduceShipMutation, IntroduceShipMutation.result_class.mutation
80
+ assert_equal StarWars::IntroduceShipMutation, StarWars::IntroduceShipMutation.field.mutation
81
+ assert_equal StarWars::IntroduceShipMutation, StarWars::IntroduceShipMutation.return_type.mutation
82
+ assert_equal StarWars::IntroduceShipMutation, StarWars::IntroduceShipMutation.input_type.mutation
83
+ assert_equal StarWars::IntroduceShipMutation, StarWars::IntroduceShipMutation.result_class.mutation
84
84
  end
85
85
 
86
86
  describe "aliased methods" do