Bugfix: do not use default operation name types if not included in schema definition block#3088
Merged
Bugfix: do not use default operation name types if not included in schema definition block#3088
Conversation
dondonz
commented
Mar 14, 2023
| def "correctly parses schema keyword block, include Query, does not include Mutation type"() { | ||
| // From RFC to clarify spec https://github.com/graphql/graphql-spec/pull/987 | ||
| when: | ||
| def schema = """schema { |
Member
Author
There was a problem hiding this comment.
Funky indentation is required for schema printing comparison
Member
There was a problem hiding this comment.
comparing via strings will often result in funky indents - its the nature of the game
bbakerman
approved these changes
Mar 14, 2023
Member
|
Nice one |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes a bug where the schema definition block
schema { }is used. If there happened to be a type calledMutationorSubscription, but not included in the schema definition block, it would be mistakenly set as an operation.This PR follows on from this proposed spec improvement graphql/graphql-spec#987 and corresponding fix in the JS reference implementation https://github.com/graphql/graphql-js/pull/3839/files.
Here's Benjie's virus schema example:
The
schemadefinition block/keyword defines query as the only operation in this schema. We have atype Mutationbut that's referring to a virus, not the GraphQL operation. (Health warning: the word schema is terribly overloaded.)Previous behaviour was
mutationType- this was not correct, and is fixed by this PR