private static void ResolveFieldSelection( ObjectType type, FieldNode fieldSelection, Action <QueryError> reportError, Dictionary <string, FieldSelection> fields) { NameString fieldName = fieldSelection.Name.Value; if (type.Fields.TryGetField(fieldName, out ObjectField field)) { string name = fieldSelection.Alias == null ? fieldSelection.Name.Value : fieldSelection.Alias.Value; if (fields.TryGetValue(name, out FieldSelection selection)) { fields[name] = selection.Merge(fieldSelection); } else { fields.Add(name, FieldSelection.Create( fieldSelection, field, name)); } } else { reportError(QueryError.CreateFieldError( "Could not resolve the specified field.", fieldSelection)); } }
public void Coerce_InputObject_NonNullFieldIsNull() { // arrange var variables = new Mock <IVariableCollection>(); ISchema schema = CreateSchema(); FieldNode fieldNode = CreateField("foo(a: { a: { } })"); var selection = FieldSelection.Create( fieldNode, schema.QueryType.Fields["foo"], "foo"); var path = Path.New("bar"); // act Action action = () => ArgumentValueBuilder.CoerceArgumentValues( selection, variables.Object, path); // assert Assert.Throws <QueryException>(action).Errors.MatchSnapshot(); }
public void Coerce_NonNullString_ToAbc() { // arrange var variables = new Mock <IVariableCollection>(); ISchema schema = CreateSchema(); FieldNode fieldNode = CreateField("bar(a: \"abc\")"); var selection = FieldSelection.Create( fieldNode, schema.QueryType.Fields["bar"], "bar"); var path = Path.New("bar"); // act Dictionary <string, ArgumentValue> arguments = ArgumentValueBuilder.CoerceArgumentValues( selection, variables.Object, path); // assert MatchSnapshot(arguments); }