Update GraphQL mutation compiler to consider arguments with replace_null_with_default
#1622
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.
Motivation
With
graphql-ruby
arguments, you can setrequired: false, default_value: 'foo', replace_null_with_default: true
to fill anull
sent by a client with the default value (docs). The current graphql mutation compiler doesn't take this into account, and assumes that allrequired: false
arguments are nilable, when in reality a non-nildefault_value
plusreplace_null_with_default
means the resolver will always receive a non-nil value.Implementation
I updated
GraphqlTypeHelper.type_for
to take in aGraphQL::Schema::Argument
, rather than just the argument type, and check for the otherArgument
params when deciding if the type is nilable.Tests
Added a test with both a nil and a non-nil
default_value
to the existing graphql mutation compiler tests.