public InputValueContext(InputValueDefinition arg, GraphQLGenerationOptions options, Document document, string propertyName)
 {
     this.arg          = arg;
     this.options      = options;
     this.document     = document;
     this.PropertyName = propertyName;
 }
        public void FromString()
        {
            /* Given */
            /* When */
            InputValueDefinition original = "field: ENUM";

            /* Then */
            Assert.Equal("field", original.Name);
            Assert.IsType <NamedType>(original.Type);
        }
        public void FromBytes()
        {
            /* Given */
            /* When */
            InputValueDefinition original = Encoding.UTF8.GetBytes("field: ENUM")
                                            .AsReadOnlySpan();

            /* Then */
            Assert.Equal("field", original.Name);
            Assert.IsType <NamedType>(original.Type);
        }
        public void WithDescription()
        {
            /* Given */
            InputValueDefinition original = "field: ENUM!";

            /* When */
            var modified = original
                           .WithDescription("Description");

            /* Then */
            Assert.Equal("Description", modified.Description);
        }
        public void WithName()
        {
            /* Given */
            InputValueDefinition original = "field: ENUM!";

            /* When */
            var modified = original
                           .WithName("b");

            /* Then */
            Assert.Equal("field", original.Name);
            Assert.Equal("b", modified.Name);
        }
    private void VisitInputValueDefinition(InputValueDefinition node)
    {
        EnterNode(node);

        Visit(node.Type);

        if (node.DefaultValue != null)
        {
            Visit(node.DefaultValue);
        }

        Visit(node.Directives);

        ExitNode(node);
    }
        public void WithType()
        {
            /* Given */
            InputValueDefinition original = @"field: Int";

            /* When */
            var modified = original
                           .WithType("String!");

            /* Then */
            var nonNull = Assert.IsType <NonNullType>(modified.Type);
            var named   = Assert.IsType <NamedType>(nonNull.OfType);

            Assert.Equal("String", named.Name);
        }
Exemple #8
0
        private string PrintInputValueDefinition(InputValueDefinition node)
        {
            var name         = PrintName(node.Name);
            var type         = Print(node.Type);
            var directives   = node.Directives?.Select(PrintDirective);
            var defaultValue = Print(node.DefaultValue);

            return(Join(new[]
            {
                $"{name}: {type}",
                Wrap("= ", defaultValue),
                Join(directives, " ")
            },
                        " "));
        }
Exemple #9
0
    protected override void ExitInputValueDefinition(PrinterContext context, InputValueDefinition inputValueDefinition)
    {
        if (context.Parent is ArgumentsDefinition)
        {
            if (context.CurrentArray?.Count > 1 && !context.CurrentArray.IsLast)
            {
                context.Append(", ");
            }
        }

        if (context.Parent is InputFieldsDefinition)
        {
            if (context.CurrentArray?.Count > 1 && !context.CurrentArray.IsLast)
            {
                context.Append(" ");
            }
        }
    }
        public void WithDirectives()
        {
            /* Given */
            InputValueDefinition original = @"field: Int";

            /* When */
            var modified = original
                           .WithDirectives(new List <Directive>
            {
                "@a",
            });

            /* Then */
            Assert.NotNull(modified.Directives);
            var a = Assert.Single(modified.Directives);

            Assert.Equal("a", a?.Name);
        }
Exemple #11
0
    public static object?CoerceArgumentValue(
        ISchema schema,
        IReadOnlyDictionary <string, object?>?coercedVariableValues,
        string argumentName,
        InputValueDefinition argumentDefinition,
        Argument?argument)
    {
        var argumentType  = argumentDefinition.Type;
        var defaultValue  = argumentDefinition.DefaultValue?.Value;
        var argumentValue = argument?.Value;

        var    hasValue = argumentValue != null;
        object?value    = null;

        if (argumentValue is Variable variable)
        {
            if (coercedVariableValues == null)
            {
                hasValue = false;
            }
            else
            {
                string variableName = variable.Name;
                hasValue = coercedVariableValues.ContainsKey(variableName);
                if (hasValue)
                {
                    value = coercedVariableValues[variableName];
                }
            }
        }
        else
        {
            value = argumentValue;
        }

        if (argumentType is NonNullType && (!hasValue || value == null))
        {
            throw new ValueCoercionException(
                      $"Argument '{argumentName}' is non-null but no value could be coerced",
                      null,
                      argumentType);
        }

        if (hasValue)
        {
            if (value == null)
            {
                return(null);
            }

            if (argumentValue is Variable)
            {
                return(value);
            }

            var coercedValue = Values.CoerceValue(
                schema,
                value,
                argumentType);

            return(coercedValue);
        }

        return(Values.CoerceValue(
                   schema,
                   defaultValue,
                   argumentType));
    }
Exemple #12
0
 protected override void EnterInputValueDefinition(PrinterContext context, InputValueDefinition inputValueDefinition)
 {
     context.AppendDescription(inputValueDefinition.Description);
     context.Append(inputValueDefinition.Name);
     context.Append(": ");
 }
Exemple #13
0
 public virtual TResult VisitInputValueDefinition(InputValueDefinition node)
 {
     return(DefaultVisit(node));
 }
 protected virtual void ExitInputValueDefinition(TContext context, InputValueDefinition inputValueDefinition)
 {
 }
Exemple #15
0
 public static InputValueDefinition WithDescription(this InputValueDefinition definition,
                                                    in StringValue?description)