From f7b11a2978a291e37f043bd89342121c40f3fea8 Mon Sep 17 00:00:00 2001 From: Yaroslav Shumakov Date: Tue, 11 Jan 2022 09:38:34 +0300 Subject: [PATCH] Fix coercing default values on schema generation --- graphql/types.lua | 1 + test/integration/graphql_test.lua | 50 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/graphql/types.lua b/graphql/types.lua index f769b6e..16df996 100644 --- a/graphql/types.lua +++ b/graphql/types.lua @@ -224,6 +224,7 @@ function types.inputObject(config) name = fieldName, kind = field.kind, description = field.description, + defaultValue = field.defaultValue, } end diff --git a/test/integration/graphql_test.lua b/test/integration/graphql_test.lua index 500a41b..a9b2c92 100644 --- a/test/integration/graphql_test.lua +++ b/test/integration/graphql_test.lua @@ -1639,3 +1639,53 @@ function g.test_schema_input_arg_described_with_kind_variable_pass() local _, errors = check_request(query, query_schema, nil, nil, { variables = variables }) t.assert_equals(errors, nil) end + +function g.test_arguments_default_values() + local function callback(_, _) + return nil + end + + local mutation_schema = { + ['test_mutation'] = { + kind = types.string.nonNull, + arguments = { + mutation_arg = types.string, + mutation_arg_defaults = { + kind = types.inputObject({ + name = 'test_input_object', + fields = { + input_object_arg_defaults = { + kind = types.string, + defaultValue = 'input object argument default value' + }, + input_object_arg = types.string, + nested_enum_arg_defaults = { + kind = types.enum({ + schema = schema, + name = 'mode', + values = { + read = 'read', + write = 'write', + }, + }), + defaultValue = 'write', + } + }, + kind = types.string, + }), + }, + }, + resolve = callback, + } + } + + local data, errors = check_request(introspection.query, nil, mutation_schema) + t.assert_equals(errors, nil) + + local test_input_object = util.find_by_name(data.__schema.types, 'test_input_object') + local input_object_arg_defaults = util.find_by_name(test_input_object.inputFields, 'input_object_arg_defaults') + t.assert_equals(input_object_arg_defaults.defaultValue, 'input object argument default value') + + local nested_enum_arg_defaults = util.find_by_name(test_input_object.inputFields, 'nested_enum_arg_defaults') + t.assert_equals(nested_enum_arg_defaults.defaultValue, 'write') +end