diff options
| author | mo khan <mo.khan@gmail.com> | 2020-12-21 17:23:09 -0700 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-12-21 17:23:09 -0700 |
| commit | bcc2ad30081dbb78983c1545c188cefa20486a04 (patch) | |
| tree | 309f243ed5daa85ad415c2df3a70359ca74c9261 | |
| parent | 143465ae64450be1a171b4f80111d53bb268fbc5 (diff) | |
test: play with introspection system
| -rw-r--r-- | lib/server.rb | 9 | ||||
| -rw-r--r-- | test/integration/server_test.rb | 32 |
2 files changed, 39 insertions, 2 deletions
diff --git a/lib/server.rb b/lib/server.rb index 2c8d318..ad3580b 100644 --- a/lib/server.rb +++ b/lib/server.rb @@ -3,8 +3,13 @@ require 'json' require 'graphql' module Types - class QueryType < GraphQL::Schema::Object + class Cake < GraphQL::Schema::Object + field :name, String, null: false + end + + class Query < GraphQL::Schema::Object field :me, String, null: false + field :cakes, [Cake], null: false def me 'mo' @@ -14,7 +19,7 @@ end class MySchema < GraphQL::Schema max_complexity 400 - query Types::QueryType + query Types::Query end class Server diff --git a/test/integration/server_test.rb b/test/integration/server_test.rb index 5bc7089..ae2da22 100644 --- a/test/integration/server_test.rb +++ b/test/integration/server_test.rb @@ -28,4 +28,36 @@ class ServerTest < Minitest::Test json = JSON.parse(last_response.body) assert_equal 'mo', json['data']['me'] end + + def test_get_schema + header 'Content-Type', 'application/graphql' + post '/', '{ __schema { types { name } } }' + + assert last_response.ok? + json = JSON.parse(last_response.body) + + [ + 'Boolean', + 'Cake', + 'Query', + 'String', + '__Directive', + '__DirectiveLocation', + '__EnumValue', + '__InputValue', + '__Type', + '__TypeKind', + ].each do |type| + assert json['data']['__schema']['types'].include?('name' => type) + end + end + + def test_get_query_type + header 'Content-Type', 'application/graphql' + post '/', '{ __schema { queryType { name } } }' + + assert last_response.ok? + json = JSON.parse(last_response.body) + assert 'Query', json['data']['__schema']['queryType']['name'] + end end |
