コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }