Beispiel #1
0
 protected override void EnterInputObjectDefinition(PrinterContext context,
                                                    InputObjectDefinition inputObjectDefinition)
 {
     context.Append(' ');
     context.AppendDescription(inputObjectDefinition.Description);
     context.Append("input ");
     context.Append(inputObjectDefinition.Name);
     context.Append(" ");
 }
    private void VisitInputObjectDefinition(InputObjectDefinition node)
    {
        EnterNode(node);

        Visit(node.Directives);

        Visit(node.Fields);

        ExitNode(node);
    }
    public void WithName()
    {
        /* Given */
        InputObjectDefinition original = @"input Obj";

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

        /* Then */
        Assert.Equal("Obj", original.Name);
        Assert.Equal("Renamed", modified.Name);
    }
    public void FromString()
    {
        /* Given */
        /* When */
        InputObjectDefinition original =
            @"input Obj {
                    field1: String
                }";

        /* Then */
        Assert.Equal("Obj", original.Name);
        Assert.NotNull(original.Fields);
    }
    public void WithDescription()
    {
        /* Given */
        InputObjectDefinition original = @"input Obj";

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

        /* Then */
        Assert.Null(original.Description);
        Assert.Equal("Description", modified.Description);
    }
    public void FromBytes()
    {
        /* Given */
        /* When */
        InputObjectDefinition original =
            Encoding.UTF8.GetBytes(@"input Obj {
                    field1: String
                }").AsReadOnlySpan();

        /* Then */
        Assert.Equal("Obj", original.Name);
        Assert.NotNull(original.Fields);
    }
Beispiel #7
0
 public static TypeDefinition Extend(
     this TypeDefinition typeDefinition,
     params TypeExtension[] typeExtensions)
 {
     return(typeDefinition switch
     {
         EnumDefinition enumDefinition => Extend(enumDefinition, typeExtensions),
         InputObjectDefinition inputObjectDefinition => Extend(inputObjectDefinition, typeExtensions),
         InterfaceDefinition interfaceDefinition => Extend(interfaceDefinition, typeExtensions),
         ObjectDefinition objectDefinition => Extend(objectDefinition, typeExtensions),
         ScalarDefinition scalarDefinition => Extend(scalarDefinition, typeExtensions),
         UnionDefinition unionDefinition => Extend(unionDefinition, typeExtensions),
         _ => throw new ArgumentOutOfRangeException(nameof(typeDefinition))
     });
Beispiel #8
0
        private string PrintInputObjectTypeDefinition(InputObjectDefinition node)
        {
            var name       = PrintName(node.Name);
            var directives = node.Directives?.Select(PrintDirective);
            var fields     = node.Fields?.Select(PrintInputValueDefinition);

            return(Join(new[]
            {
                "input",
                name,
                Join(directives, " "),
                Block(fields) ?? "{ }"
            },
                        " "));
        }
    public void WithFields()
    {
        /* Given */
        InputObjectDefinition original = @"input Obj";

        /* When */
        var modified = original
                       .WithFields(new List <InputValueDefinition>
        {
            "field: Float!"
        });

        /* Then */
        Assert.Null(original.Fields);
        Assert.NotNull(modified.Fields);
        Assert.NotEmpty(modified.Fields);
    }
    public void WithDirectives()
    {
        /* Given */
        InputObjectDefinition original = @"input Obj";

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

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

        Assert.Equal("a", a?.Name);
    }
    public void WithFields_Modify()
    {
        /* Given */
        InputObjectDefinition original = @"input Obj { field: String }";

        /* When */
        var modified = original
                       .WithFields(original
                                   .Fields?
                                   .Select(originalField => originalField
                                           .WithDescription("Description"))
                                   .ToList()
                                   );

        /* Then */
        Assert.NotNull(modified.Fields);
        var field = Assert.Single(modified.Fields);

        Assert.Equal("Description", field?.Description);
    }
Beispiel #12
0
    public static object?CoerceValue(
        ISchema schema,
        object?value,
        TypeBase valueType)
    {
        switch (valueType)
        {
        case NonNullType NonNullType:
            return(CoerceNonNullTypeValue(
                       schema,
                       value,
                       NonNullType));

        case ListType list:
            return(CoerceListValues(
                       schema,
                       list.OfType,
                       value));
        }


        if (valueType is not NamedType namedValueType)
        {
            throw new ValueCoercionException(
                      $"Unexpected valueType {valueType}. Cannot coerce value.",
                      value,
                      valueType);
        }

        var valueTypeDefinition = schema.GetRequiredNamedType <TypeDefinition>(namedValueType.Name);

        return(valueTypeDefinition switch
        {
            ScalarDefinition scalar => CoerceScalarValue(schema, value, scalar),
            EnumDefinition enumDefinition => CoerceEnumValue(value, enumDefinition),
            InputObjectDefinition input => CoerceInputValue(
                schema,
                value,
                input),
            _ => throw new ArgumentOutOfRangeException($"Type of the '{valueType} is not supported by value coercion")
        });
 public static InputObjectDefinition WithDescription(this InputObjectDefinition definition,
                                                     in StringValue?description)
Beispiel #14
0
 public virtual TResult VisitInputObjectDefinition(InputObjectDefinition node)
 {
     return(DefaultVisit(node));
 }
 protected virtual void ExitInputObjectDefinition(TContext context, InputObjectDefinition inputObjectDefinition)
 {
 }