Skip to content

Commit 6db0d03

Browse files
authored
Fixed inline nullable null argument error (#462)
Co-authored-by: @panthus
1 parent 570a8fa commit 6db0d03

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/FSharp.Data.GraphQL.Server/Values.fs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,10 @@ let rec internal compileByType (inputObjectPath: FieldPath) (inputSource : Input
256256
match innerDef with
257257
| InputObject inputObjDef -> inputObjDef.ExecuteInput <- inner
258258
| _ -> ()
259-
fun value variables -> inner value variables
259+
fun value variables ->
260+
match value with
261+
| NullValue -> Ok null
262+
| _ -> inner value variables
260263

261264
| Enum enumDef ->
262265
fun value variables ->

tests/FSharp.Data.GraphQL.Tests/ExecutionTests.fs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,25 @@ let ``Execution handles basic tasks: correctly threads arguments`` () =
217217
equals (Some 123) data.Num
218218
equals (Some "foo") data.Str
219219

220+
[<Fact>]
221+
let ``Execution handles basic tasks: correctly handles null arguments`` () =
222+
let query = """query Example {
223+
b(numArg: null, stringArg: null)
224+
}"""
225+
let data = { Num = None; Str = None }
226+
let Type =
227+
Define.Object("Type",
228+
[ Define.Field("b", Nullable StringType, "", [ Define.Input("numArg", Nullable IntType); Define.Input("stringArg", Nullable StringType) ],
229+
fun ctx value ->
230+
value.Num <- ctx.TryArg("numArg")
231+
value.Str <- ctx.TryArg("stringArg")
232+
value.Str) ])
233+
234+
let result = sync <| Executor(Schema(Type)).AsyncExecute(parse query, data)
235+
ensureDirect result <| fun data errors -> empty errors
236+
equals None data.Num
237+
equals None data.Str
238+
220239
type InlineTest = { A: string }
221240

222241
[<Fact>]

0 commit comments

Comments
 (0)