@@ -1075,3 +1075,53 @@ let ``Object list filter: Must return empty filter when no discriminated union t
10751075 let query = parse """ query testQuery() { Properties { __typename } }"""
10761076 let result = execute query
10771077 ensureDirect result <| fun _ errors -> empty errors
1078+
1079+ [<Fact>]
1080+ let ``Object list filter : Must parse filter value through variable`` () =
1081+ // TODO: fix parsing in SchemaDefinitions.fs : line 94
1082+ let query =
1083+ parse
1084+ """ query testQuery($filter: String) {
1085+ A (id : 1) {
1086+ id
1087+ value
1088+ subjects (filter : {value_starts_with : $filter}) { ...Value }
1089+ }
1090+ }
1091+
1092+ fragment Value on Subject {
1093+ ...on A {
1094+ id
1095+ value
1096+ }
1097+ ...on B {
1098+ id
1099+ value
1100+ }
1101+ }"""
1102+ let expected =
1103+ NameValueLookup.ofList [
1104+ " A" ,
1105+ upcast
1106+ NameValueLookup.ofList [
1107+ " id" , upcast 1
1108+ " value" , upcast " A1"
1109+ " subjects" ,
1110+ upcast
1111+ [
1112+ NameValueLookup.ofList [ " id" , upcast 2 ; " value" , upcast " A2" ]
1113+ NameValueLookup.ofList [ " id" , upcast 6 ; " value" , upcast " 3000" ]
1114+ ]
1115+ ]
1116+ ]
1117+ do
1118+ let filterValue = " 3" |> JsonDocument.Parse |> _. RootElement
1119+ let variables = ImmutableDictionary< string, JsonElement>. Empty.Add ( " filter" , filterValue)
1120+ let filter = ( StartsWith { FieldName = " value" ; Value = " 3" })
1121+ let expectedFilter : KeyValuePair < obj list , _ > = kvp ([ " A" ; " subjects" ]) ( filter)
1122+ let result = executeAndVerifyFilter ( query, variables, filter)
1123+
1124+ ensureDirect result <| fun data errors ->
1125+ empty errors
1126+ data |> equals ( upcast expected)
1127+ result.Metadata.TryFind< ObjectListFilters> ( " filters" ) |> wantValueSome |> seqEquals [ expectedFilter ]
0 commit comments