|
3 | 3 | describe GraphQL::Introspection::TypeType do
|
4 | 4 | let(:query_string) {%|
|
5 | 5 | query introspectionQuery {
|
6 |
| - cheeseType: __type(name: "Cheese") { name, kind, fields { name, isDeprecated, type { name, ofType { name } } } } |
7 |
| - milkType: __type(name: "Milk") { interfaces { name }, fields { type { name, ofType { name } } } } |
| 6 | + cheeseType: __type(name: "Cheese") { name, kind, fields { name, isDeprecated, type { kind, name, ofType { name } } } } |
| 7 | + milkType: __type(name: "Milk") { interfaces { name }, fields { type { kind, name, ofType { name } } } } |
8 | 8 | dairyAnimal: __type(name: "DairyAnimal") { name, kind, enumValues(includeDeprecated: false) { name, isDeprecated } }
|
9 | 9 | dairyProduct: __type(name: "DairyProduct") { name, kind, possibleTypes { name } }
|
10 | 10 | animalProduct: __type(name: "AnimalProduct") { name, kind, possibleTypes { name }, fields { name } }
|
|
13 | 13 | |}
|
14 | 14 | let(:result) { DummySchema.execute(query_string, context: {}, variables: {"cheeseId" => 2}) }
|
15 | 15 | let(:cheese_fields) {[
|
16 |
| - {"name"=>"deeplyNullableCheese", "isDeprecated"=>false, "type"=>{"name"=>"Cheese", "ofType"=>nil}}, |
17 |
| - {"name"=>"flavor", "isDeprecated" => false, "type" => { "name" => "Non-Null", "ofType" => { "name" => "String"}}}, |
18 |
| - {"name"=>"id", "isDeprecated" => false, "type" => { "name" => "Non-Null", "ofType" => { "name" => "Int"}}}, |
19 |
| - {"name"=>"nullableCheese", "isDeprecated"=>false, "type"=>{"name"=>"Cheese", "ofType"=>nil}}, |
20 |
| - {"name"=>"origin", "isDeprecated" => false, "type" => { "name" => "Non-Null", "ofType" => { "name" => "String"}}}, |
21 |
| - {"name"=>"similarCheese", "isDeprecated"=>false, "type"=>{"name"=>"Cheese", "ofType"=>nil}}, |
22 |
| - {"name"=>"source", "isDeprecated" => false, "type" => { "name" => "Non-Null", "ofType" => { "name" => "DairyAnimal"}}}, |
| 16 | + {"name"=>"deeplyNullableCheese", "isDeprecated" => false, "type"=>{ "kind" => "OBJECT", "name" => "Cheese", "ofType" => nil}}, |
| 17 | + {"name"=>"flavor", "isDeprecated" => false, "type" => { "kind" => "NON_NULL", "name" => nil, "ofType" => { "name" => "String"}}}, |
| 18 | + {"name"=>"id", "isDeprecated" => false, "type" => { "kind" => "NON_NULL", "name" => nil, "ofType" => { "name" => "Int"}}}, |
| 19 | + {"name"=>"nullableCheese", "isDeprecated"=>false, "type"=>{ "kind" => "OBJECT", "name" => "Cheese", "ofType"=>nil}}, |
| 20 | + {"name"=>"origin", "isDeprecated" => false, "type" => { "kind" => "NON_NULL", "name" => nil, "ofType" => { "name" => "String"}}}, |
| 21 | + {"name"=>"similarCheese", "isDeprecated"=>false, "type"=>{ "kind" => "OBJECT", "name"=>"Cheese", "ofType"=>nil}}, |
| 22 | + {"name"=>"source", "isDeprecated" => false, "type" => { "kind" => "NON_NULL", "name" => nil, "ofType" => { "name" => "DairyAnimal"}}}, |
23 | 23 | ]}
|
24 | 24 |
|
25 | 25 | let(:dairy_animals) {[
|
|
41 | 41 | {"name"=>"LocalProduct"},
|
42 | 42 | ],
|
43 | 43 | "fields"=>[
|
44 |
| - {"type"=>{"name"=>"List", "ofType"=>{"name"=>"DairyProduct"}}}, |
45 |
| - {"type"=>{"name"=>"String", "ofType"=>nil}}, |
46 |
| - {"type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"Float"}}}, |
47 |
| - {"type"=>{"name"=>"List", "ofType"=>{"name"=>"String"}}}, |
48 |
| - {"type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"ID"}}}, |
49 |
| - {"type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"String"}}}, |
50 |
| - {"type"=>{"name"=>"DairyAnimal", "ofType"=>nil}}, |
| 44 | + {"type"=>{"kind"=>"LIST","name"=>nil, "ofType"=>{"name"=>"DairyProduct"}}}, |
| 45 | + {"type"=>{"kind"=>"SCALAR","name"=>"String", "ofType"=>nil}}, |
| 46 | + {"type"=>{"kind"=>"NON_NULL","name"=>nil, "ofType"=>{"name"=>"Float"}}}, |
| 47 | + {"type"=>{"kind"=>"LIST","name"=>nil, "ofType"=>{"name"=>"String"}}}, |
| 48 | + {"type"=>{"kind"=>"NON_NULL","name"=>nil, "ofType"=>{"name"=>"ID"}}}, |
| 49 | + {"type"=>{"kind"=>"NON_NULL","name"=>nil, "ofType"=>{"name"=>"String"}}}, |
| 50 | + {"type"=>{"kind"=>"ENUM","name"=>"DairyAnimal", "ofType"=>nil}}, |
51 | 51 | ]
|
52 | 52 | },
|
53 | 53 | "dairyAnimal"=>{
|
|
76 | 76 | describe "deprecated fields" do
|
77 | 77 | let(:query_string) {%|
|
78 | 78 | query introspectionQuery {
|
79 |
| - cheeseType: __type(name: "Cheese") { name, kind, fields(includeDeprecated: true) { name, isDeprecated, type { name, ofType { name } } } } |
| 79 | + cheeseType: __type(name: "Cheese") { name, kind, fields(includeDeprecated: true) { name, isDeprecated, type { kind, name, ofType { name } } } } |
80 | 80 | dairyAnimal: __type(name: "DairyAnimal") { name, kind, enumValues(includeDeprecated: true) { name, isDeprecated } }
|
81 | 81 | }
|
82 | 82 | |}
|
83 |
| - let(:deprecated_fields) { {"name"=>"fatContent", "isDeprecated"=>true, "type"=>{"name"=>"Non-Null", "ofType"=>{"name"=>"Float"}}} } |
| 83 | + let(:deprecated_fields) { {"name"=>"fatContent", "isDeprecated"=>true, "type"=>{"kind"=>"NON_NULL","name"=>nil, "ofType"=>{"name"=>"Float"}}} } |
84 | 84 |
|
85 | 85 | it "can expose deprecated fields" do
|
86 | 86 | new_cheese_fields = ([deprecated_fields] + cheese_fields).sort_by { |f| f["name"] }
|
|
102 | 102 | describe "input objects" do
|
103 | 103 | let(:query_string) {%|
|
104 | 104 | query introspectionQuery {
|
105 |
| - __type(name: "DairyProductInput") { name, description, kind, inputFields { name, type { name }, defaultValue } } |
| 105 | + __type(name: "DairyProductInput") { name, description, kind, inputFields { name, type { kind, name }, defaultValue } } |
106 | 106 | }
|
107 | 107 | |}
|
108 | 108 |
|
|
113 | 113 | "description"=>"Properties for finding a dairy product",
|
114 | 114 | "kind"=>"INPUT_OBJECT",
|
115 | 115 | "inputFields"=>[
|
116 |
| - {"name"=>"source", "type"=>{ "name" => "Non-Null"}, "defaultValue"=>nil}, |
117 |
| - {"name"=>"originDairy", "type"=>{"name"=>"String"}, "defaultValue"=>"\"Sugar Hollow Dairy\""}, |
118 |
| - {"name"=>"fatContent", "type"=>{ "name" => "Float"}, "defaultValue"=>"0.3"}, |
119 |
| - {"name"=>"organic", "type"=>{ "name" => "Boolean"}, "defaultValue"=>"false"}, |
| 116 | + {"name"=>"source", "type"=>{"kind"=>"NON_NULL","name"=>nil, }, "defaultValue"=>nil}, |
| 117 | + {"name"=>"originDairy", "type"=>{"kind"=>"SCALAR","name"=>"String"}, "defaultValue"=>"\"Sugar Hollow Dairy\""}, |
| 118 | + {"name"=>"fatContent", "type"=>{"kind"=>"SCALAR","name" => "Float"}, "defaultValue"=>"0.3"}, |
| 119 | + {"name"=>"organic", "type"=>{"kind"=>"SCALAR","name" => "Boolean"}, "defaultValue"=>"false"}, |
120 | 120 | ]
|
121 | 121 | }
|
122 | 122 | }}
|
|
0 commit comments