Skip to content

Commit f3d5397

Browse files
authored
Merge pull request rmosolgo#658 from jamesdphillips/falsey-default-values-bug
Apply default values that are 'false'
2 parents d903baa + 9df49fa commit f3d5397

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

lib/graphql/input_object_type.rb

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,10 @@ def coerce_non_null_input(value)
9595

9696
if value.key?(input_key)
9797
coerced_value = input_field_defn.type.coerce_input(field_value)
98-
else
99-
coerced_value = input_field_defn.default_value
100-
end
101-
102-
if coerced_value || value.key?(input_key)
10398
input_values[input_key] = coerced_value
99+
elsif input_field_defn.default_value?
100+
default_value = input_field_defn.default_value
101+
input_values[input_key] = default_value
104102
end
105103
end
106104

spec/graphql/input_object_type_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
a: String
240240
b: Int!
241241
c: String = "Default"
242+
d: Boolean = false
242243
}
243244
|) }
244245
let(:input_type) { schema.types['ExampleInputObject'] }
@@ -274,6 +275,13 @@
274275
assert_equal 1, result['b']
275276
assert_equal 'Test', result['c']
276277
end
278+
279+
it "false default values are returned" do
280+
input = MinimumInputObject.new({"b" => 1})
281+
result = input_type.coerce_input(input)
282+
283+
assert_equal false, result['d']
284+
end
277285
end
278286

279287
describe "when sent into a query" do

0 commit comments

Comments
 (0)