spec/graphql/schema/printer_spec.rb in graphql-1.8.11 vs spec/graphql/schema/printer_spec.rb in graphql-1.8.12
- old
+ new
@@ -138,164 +138,238 @@
expected = <<SCHEMA
schema {
query: Root
}
-# Marks an element of a GraphQL schema as no longer supported.
+"""
+Marks an element of a GraphQL schema as no longer supported.
+"""
directive @deprecated(
- # Explains why this element was deprecated, usually also including a suggestion
- # for how to access supported similar data. Formatted in
- # [Markdown](https://daringfireball.net/projects/markdown/).
+ """
+ Explains why this element was deprecated, usually also including a suggestion
+ for how to access supported similar data. Formatted in
+ [Markdown](https://daringfireball.net/projects/markdown/).
+ """
reason: String = "No longer supported"
) on FIELD_DEFINITION | ENUM_VALUE
-# Directs the executor to include this field or fragment only when the `if` argument is true.
+"""
+Directs the executor to include this field or fragment only when the `if` argument is true.
+"""
directive @include(
- # Included when true.
+ """
+ Included when true.
+ """
if: Boolean!
) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
-# Directs the executor to skip this field or fragment when the `if` argument is true.
+"""
+Directs the executor to skip this field or fragment when the `if` argument is true.
+"""
directive @skip(
- # Skipped when true.
+ """
+ Skipped when true.
+ """
if: Boolean!
) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT
-# A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
-#
-# In some cases, you need to provide options to alter GraphQL's execution behavior
-# in ways field arguments will not suffice, such as conditionally including or
-# skipping a field. Directives provide this by describing additional information
-# to the executor.
+"""
+A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.
+
+In some cases, you need to provide options to alter GraphQL's execution behavior
+in ways field arguments will not suffice, such as conditionally including or
+skipping a field. Directives provide this by describing additional information
+to the executor.
+"""
type __Directive {
args: [__InputValue!]!
description: String
locations: [__DirectiveLocation!]!
name: String!
onField: Boolean! @deprecated(reason: "Use `locations`.")
onFragment: Boolean! @deprecated(reason: "Use `locations`.")
onOperation: Boolean! @deprecated(reason: "Use `locations`.")
}
-# A Directive can be adjacent to many parts of the GraphQL language, a
-# __DirectiveLocation describes one such possible adjacencies.
+"""
+A Directive can be adjacent to many parts of the GraphQL language, a
+__DirectiveLocation describes one such possible adjacencies.
+"""
enum __DirectiveLocation {
- # Location adjacent to an argument definition.
+ """
+ Location adjacent to an argument definition.
+ """
ARGUMENT_DEFINITION
- # Location adjacent to an enum definition.
+ """
+ Location adjacent to an enum definition.
+ """
ENUM
- # Location adjacent to an enum value definition.
+ """
+ Location adjacent to an enum value definition.
+ """
ENUM_VALUE
- # Location adjacent to a field.
+ """
+ Location adjacent to a field.
+ """
FIELD
- # Location adjacent to a field definition.
+ """
+ Location adjacent to a field definition.
+ """
FIELD_DEFINITION
- # Location adjacent to a fragment definition.
+ """
+ Location adjacent to a fragment definition.
+ """
FRAGMENT_DEFINITION
- # Location adjacent to a fragment spread.
+ """
+ Location adjacent to a fragment spread.
+ """
FRAGMENT_SPREAD
- # Location adjacent to an inline fragment.
+ """
+ Location adjacent to an inline fragment.
+ """
INLINE_FRAGMENT
- # Location adjacent to an input object field definition.
+ """
+ Location adjacent to an input object field definition.
+ """
INPUT_FIELD_DEFINITION
- # Location adjacent to an input object type definition.
+ """
+ Location adjacent to an input object type definition.
+ """
INPUT_OBJECT
- # Location adjacent to an interface definition.
+ """
+ Location adjacent to an interface definition.
+ """
INTERFACE
- # Location adjacent to a mutation operation.
+ """
+ Location adjacent to a mutation operation.
+ """
MUTATION
- # Location adjacent to an object type definition.
+ """
+ Location adjacent to an object type definition.
+ """
OBJECT
- # Location adjacent to a query operation.
+ """
+ Location adjacent to a query operation.
+ """
QUERY
- # Location adjacent to a scalar definition.
+ """
+ Location adjacent to a scalar definition.
+ """
SCALAR
- # Location adjacent to a schema definition.
+ """
+ Location adjacent to a schema definition.
+ """
SCHEMA
- # Location adjacent to a subscription operation.
+ """
+ Location adjacent to a subscription operation.
+ """
SUBSCRIPTION
- # Location adjacent to a union definition.
+ """
+ Location adjacent to a union definition.
+ """
UNION
}
-# One possible value for a given Enum. Enum values are unique values, not a
-# placeholder for a string or numeric value. However an Enum value is returned in
-# a JSON response as a string.
+"""
+One possible value for a given Enum. Enum values are unique values, not a
+placeholder for a string or numeric value. However an Enum value is returned in
+a JSON response as a string.
+"""
type __EnumValue {
deprecationReason: String
description: String
isDeprecated: Boolean!
name: String!
}
-# Object and Interface types are described by a list of Fields, each of which has
-# a name, potentially a list of arguments, and a return type.
+"""
+Object and Interface types are described by a list of Fields, each of which has
+a name, potentially a list of arguments, and a return type.
+"""
type __Field {
args: [__InputValue!]!
deprecationReason: String
description: String
isDeprecated: Boolean!
name: String!
type: __Type!
}
-# Arguments provided to Fields or Directives and the input fields of an
-# InputObject are represented as Input Values which describe their type and
-# optionally a default value.
+"""
+Arguments provided to Fields or Directives and the input fields of an
+InputObject are represented as Input Values which describe their type and
+optionally a default value.
+"""
type __InputValue {
- # A GraphQL-formatted string representing the default value for this input value.
+ """
+ A GraphQL-formatted string representing the default value for this input value.
+ """
defaultValue: String
description: String
name: String!
type: __Type!
}
-# A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all
-# available types and directives on the server, as well as the entry points for
-# query, mutation, and subscription operations.
+"""
+A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all
+available types and directives on the server, as well as the entry points for
+query, mutation, and subscription operations.
+"""
type __Schema {
- # A list of all directives supported by this server.
+ """
+ A list of all directives supported by this server.
+ """
directives: [__Directive!]!
- # If this server supports mutation, the type that mutation operations will be rooted at.
+ """
+ If this server supports mutation, the type that mutation operations will be rooted at.
+ """
mutationType: __Type
- # The type that query operations will be rooted at.
+ """
+ The type that query operations will be rooted at.
+ """
queryType: __Type!
- # If this server support subscription, the type that subscription operations will be rooted at.
+ """
+ If this server support subscription, the type that subscription operations will be rooted at.
+ """
subscriptionType: __Type
- # A list of all types supported by this server.
+ """
+ A list of all types supported by this server.
+ """
types: [__Type!]!
}
-# The fundamental unit of any GraphQL Schema is the type. There are many kinds of
-# types in GraphQL as represented by the `__TypeKind` enum.
-#
-# Depending on the kind of a type, certain fields describe information about that
-# type. Scalar types provide no information beyond a name and description, while
-# Enum types provide their values. Object and Interface types provide the fields
-# they describe. Abstract types, Union and Interface, provide the Object types
-# possible at runtime. List and NonNull types compose other types.
+"""
+The fundamental unit of any GraphQL Schema is the type. There are many kinds of
+types in GraphQL as represented by the `__TypeKind` enum.
+
+Depending on the kind of a type, certain fields describe information about that
+type. Scalar types provide no information beyond a name and description, while
+Enum types provide their values. Object and Interface types provide the fields
+they describe. Abstract types, Union and Interface, provide the Object types
+possible at runtime. List and NonNull types compose other types.
+"""
type __Type {
description: String
enumValues(includeDeprecated: Boolean = false): [__EnumValue!]
fields(includeDeprecated: Boolean = false): [__Field!]
inputFields: [__InputValue!]
@@ -304,34 +378,52 @@
name: String
ofType: __Type
possibleTypes: [__Type!]
}
-# An enum describing what kind of type a given `__Type` is.
+"""
+An enum describing what kind of type a given `__Type` is.
+"""
enum __TypeKind {
- # Indicates this type is an enum. `enumValues` is a valid field.
+ """
+ Indicates this type is an enum. `enumValues` is a valid field.
+ """
ENUM
- # Indicates this type is an input object. `inputFields` is a valid field.
+ """
+ Indicates this type is an input object. `inputFields` is a valid field.
+ """
INPUT_OBJECT
- # Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.
+ """
+ Indicates this type is an interface. `fields` and `possibleTypes` are valid fields.
+ """
INTERFACE
- # Indicates this type is a list. `ofType` is a valid field.
+ """
+ Indicates this type is a list. `ofType` is a valid field.
+ """
LIST
- # Indicates this type is a non-null. `ofType` is a valid field.
+ """
+ Indicates this type is a non-null. `ofType` is a valid field.
+ """
NON_NULL
- # Indicates this type is an object. `fields` and `interfaces` are valid fields.
+ """
+ Indicates this type is an object. `fields` and `interfaces` are valid fields.
+ """
OBJECT
- # Indicates this type is a scalar.
+ """
+ Indicates this type is a scalar.
+ """
SCALAR
- # Indicates this type is a union. `possibleTypes` is a valid field.
+ """
+ Indicates this type is a union. `possibleTypes` is a valid field.
+ """
UNION
}
SCHEMA
assert_equal expected.chomp, GraphQL::Schema::Printer.print_introspection_schema
end
@@ -395,27 +487,37 @@
BAZ @deprecated(reason: "Use \\\"BAR\\\" instead.\\n\\nIt's the replacement for this value.\\n")
FOO
WOZ @deprecated
}
-# A blog comment
+"""
+A blog comment
+"""
type Comment implements Node {
id: ID!
}
-# Autogenerated input type of CreatePost
+"""
+Autogenerated input type of CreatePost
+"""
input CreatePostInput {
body: String!
- # A unique identifier for the client performing the mutation.
+ """
+ A unique identifier for the client performing the mutation.
+ """
clientMutationId: String
title: String!
}
-# Autogenerated return type of CreatePost
+"""
+Autogenerated return type of CreatePost
+"""
type CreatePostPayload {
- # A unique identifier for the client performing the mutation.
+ """
+ A unique identifier for the client performing the mutation.
+ """
clientMutationId: String
post: Post
}
type Image {
@@ -423,47 +525,63 @@
id: ID!
name: String!
width: Int!
}
-# Media objects
+"""
+Media objects
+"""
union Media = Audio | Image
type Mutation {
- # Create a blog post
+ """
+ Create a blog post
+ """
createPost(input: CreatePostInput!): CreatePostPayload
}
interface Node {
id: ID!
}
-# A blog post
+"""
+A blog post
+"""
type Post {
body: String!
comments: [Comment!]
comments_count: Int! @deprecated(reason: "Use \\\"comments\\\".")
id: ID!
title: String!
}
-# The query root of this schema
+"""
+The query root of this schema
+"""
type Query {
post(
- # Post ID
+ """
+ Post ID
+ """
id: ID!
varied: Varied = {id: "123", int: 234, float: 2.3, enum: FOO, sub: [{string: "str"}]}
variedWithNulls: Varied = {id: null, int: null, float: null, enum: null, sub: null}
): Post
}
-# Test
+"""
+Test
+"""
input Sub {
- # Something
+ """
+ Something
+ """
int: Int
- # Something
+ """
+ Something
+ """
string: String
}
type Subscription {
post(id: ID!): Post
@@ -551,55 +669,75 @@
enum Choice {
BAR
FOO
}
-# A blog comment
+"""
+A blog comment
+"""
type Comment implements Node {
id: ID!
}
-# Autogenerated input type of CreatePost
+"""
+Autogenerated input type of CreatePost
+"""
input CreatePostInput {
body: String!
- # A unique identifier for the client performing the mutation.
+ """
+ A unique identifier for the client performing the mutation.
+ """
clientMutationId: String
title: String!
}
-# Autogenerated return type of CreatePost
+"""
+Autogenerated return type of CreatePost
+"""
type CreatePostPayload {
- # A unique identifier for the client performing the mutation.
+ """
+ A unique identifier for the client performing the mutation.
+ """
clientMutationId: String
post: Post
}
-# Media objects
+"""
+Media objects
+"""
union Media = Audio
type Mutation {
- # Create a blog post
+ """
+ Create a blog post
+ """
createPost(input: CreatePostInput!): CreatePostPayload
}
interface Node {
id: ID!
}
-# A blog post
+"""
+A blog post
+"""
type Post {
body: String!
comments: [Comment!]
id: ID!
title: String!
}
-# The query root of this schema
+"""
+The query root of this schema
+"""
type Query {
post(
- # Post ID
+ """
+ Post ID
+ """
id: ID!
): Post
}
type Subscription {
@@ -616,11 +754,13 @@
end
describe "#print_type" do
it "returns the type schema as a string" do
expected = <<SCHEMA
-# A blog post
+"""
+A blog post
+"""
type Post {
body: String!
comments: [Comment!]
comments_count: Int! @deprecated(reason: "Use \\\"comments\\\".")
id: ID!
@@ -630,16 +770,22 @@
assert_equal expected.chomp, GraphQL::Schema::Printer.new(schema).print_type(schema.types['Post'])
end
it "can print non-object types" do
expected = <<SCHEMA
-# Test
+"""
+Test
+"""
input Sub {
- # Something
+ """
+ Something
+ """
int: Int
- # Something
+ """
+ Something
+ """
string: String
}
SCHEMA
assert_equal expected.chomp, GraphQL::Schema::Printer.new(schema).print_type(schema.types['Sub'])
end
@@ -667,10 +813,12 @@
schema = GraphQL::Schema.define do
query query_root
end
expected = <<SCHEMA
-# The query root of this schema
+"""
+The query root of this schema
+"""
type Query {
example(input: SomeType = "Howdy"): SomeType
}
SCHEMA