示例#1
0
        protected override DirectiveTypeDefinition CreateDefinition(
            IInitializationContext context)
        {
            var descriptor = DirectiveTypeDescriptor.New <TDirective>(
                context.DescriptorContext);

            _conf(descriptor);
            return(descriptor.CreateDefinition());
        }
        public void DeclareName()
        {
            // arrange
            // act
            var descriptor =
                DirectiveTypeDescriptor.New(Context, "Foo");

            // assert
            Assert.Equal("Foo", descriptor.CreateDefinition().Name);
        }
示例#3
0
        protected override DirectiveTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = DirectiveTypeDescriptor.New <TDirective>(context.DescriptorContext);

            _configure !(descriptor);
            _configure = null;

            return(descriptor.CreateDefinition());
        }
示例#4
0
        protected override DirectiveTypeDefinition CreateDefinition(
            IInitializationContext context)
        {
            var descriptor = DirectiveTypeDescriptor.New(
                DescriptorContext.Create(context.Services),
                GetType());

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
示例#5
0
        protected override DirectiveTypeDefinition CreateDefinition(
            IInitializationContext context)
        {
            var descriptor = DirectiveTypeDescriptor.FromSchemaType(
                context.DescriptorContext,
                GetType());

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
示例#6
0
        public void DeclareDescription()
        {
            // arrange
            var descriptor = DirectiveTypeDescriptor.New(Context);

            // act
            descriptor.Description("Desc");

            // assert
            Assert.Equal("Desc", descriptor.CreateDefinition().Description);
        }
        public void CreateDescriptionWithEmptyName()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor();

            // act
            Action a = () => descriptor.CreateDescription();

            // assert
            Assert.Throws <InvalidOperationException>(a);
        }
示例#8
0
        public void DeclareEmptyName()
        {
            // arrange
            var descriptor = DirectiveTypeDescriptor.New(Context);

            // act
            Action a = () => descriptor.Name(string.Empty);

            // assert
            Assert.Throws <ArgumentException>(a);
        }
        public void DeclareNullName()
        {
            // arrange
            var descriptor =
                DirectiveTypeDescriptor.New(Context, "Foo");

            // act
            Action a = () => descriptor.Name(null);

            // assert
            Assert.Throws <ArgumentException>(a);
        }
示例#10
0
        public void MethodsAreNotAllowedAsArguments()
        {
            // arrange
            var descriptor =
                DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // act
            Action action = () => descriptor.Argument(t => t.Foo()).Ignore();

            // assert
            Assert.Throws <ArgumentException>(action);
        }
        public void MethodsAreNotAllowedAsArguments()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor <CustomDirective> desc = descriptor;
            Action action = () => desc.Argument(t => t.Foo()).Ignore();

            // assert
            Assert.Throws <ArgumentException>(action);
        }
        public void DeclareEmptyName()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor();

            // act
            IDirectiveTypeDescriptor desc = descriptor;
            Action a = () => desc.Name(string.Empty);

            // assert
            Assert.Throws <ArgumentException>(a);
        }
示例#13
0
        public void InferName()
        {
            // arrange
            // act
            var descriptor =
                DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Equal("CustomDirective", description.Name);
        }
示例#14
0
        public void DeclareArgument()
        {
            // arrange
            var descriptor = DirectiveTypeDescriptor.New(Context);

            // act
            descriptor.Argument("arg").Type <BooleanType>();;

            // assert
            DirectiveTypeDefinition description = descriptor.CreateDefinition();

            Assert.Equal("arg", description.Arguments.Single().Name);
        }
        public void DeclareName()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor();

            // act
            IDirectiveTypeDescriptor desc = descriptor;

            desc.Name("Foo");

            // assert
            Assert.Equal("Foo", descriptor.CreateDescription().Name);
        }
        public void InferName()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor desc = descriptor;

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Equal("CustomDirective", description.Name);
        }
示例#17
0
        public void DeclareArgumentWithProperty()
        {
            // arrange
            // act
            var descriptor = DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal("fieldA", t.Name),
                              t => Assert.Equal("fieldB", t.Name));
        }
示例#18
0
        public void Ignore_ExpressionIsNull_ArgumentNullException()
        {
            // arrange
            DirectiveTypeDescriptor <CustomDirective2> descriptor =
                DirectiveTypeDescriptor.New <CustomDirective2>(
                    DescriptorContext.Create());

            // act
            Action action = () =>
                            DirectiveTypeDescriptorExtensions
                            .Ignore(descriptor, null);

            // assert
            Assert.Throws <ArgumentNullException>(action);
        }
示例#19
0
        public void OverrideName()
        {
            // arrange
            var descriptor =
                DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // act
            descriptor.Name("Foo");

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Equal("Foo", description.Name);
        }
        public void OverrideName()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor desc = descriptor;

            desc.Name("Foo");

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Equal("Foo", description.Name);
        }
        public void DeclareArgumentWithProperty()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor <CustomDirective> desc = descriptor;

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal("fieldA", t.Name),
                              t => Assert.Equal("fieldB", t.Name));
        }
示例#22
0
        public void IgnoreArgumentBinding()
        {
            // arrange
            var descriptor =
                DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // act
            descriptor.Argument(t => t.FieldA).Ignore();

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal("fieldB", t.Name));
        }
示例#23
0
        public void DeclareExplicitArgumentBinding()
        {
            // arrange
            var descriptor =
                DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // act
            descriptor.BindArguments(BindingBehavior.Explicit);
            descriptor.Argument(t => t.FieldA);

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal("fieldA", t.Name));
        }
        public void IgnoreArgumentBinding()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor <CustomDirective> desc = descriptor;

            desc.Argument(t => t.FieldA).Ignore();

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal("fieldB", t.Name));
        }
        public void DeclareArgument()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor();

            // act
            IDirectiveTypeDescriptor desc = descriptor;

            desc.Name("Foo");
            desc.Argument("arg").Type <BooleanType>();;

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Equal("arg", description.Arguments.Single().Name);
        }
示例#26
0
        public void DeclareLocation()
        {
            // arrange
            var descriptor = DirectiveTypeDescriptor.New(Context);

            // act
            descriptor.Location(DirectiveLocation.Enum);
            descriptor.Location(DirectiveLocation.Enum);
            descriptor.Location(DirectiveLocation.EnumValue);

            // assert
            DirectiveTypeDefinition description =
                descriptor.CreateDefinition();

            Assert.Collection(description.Locations,
                              t => Assert.Equal(DirectiveLocation.Enum, t),
                              t => Assert.Equal(DirectiveLocation.EnumValue, t));
        }
示例#27
0
        public void DeclareArgumentAndSpecifyClrType()
        {
            // arrange
            var descriptor = DirectiveTypeDescriptor.New <CustomDirective>(Context);

            // act
            descriptor.Argument(t => t.FieldA).Type(typeof(NonNullType <StringType>));

            // assert
            DirectiveTypeDefinition description = descriptor.CreateDefinition();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal(
                                  typeof(NonNullType <StringType>),
                                  Assert.IsType <ExtendedTypeReference>(t.Type).Type.Source),
                              t => Assert.Equal(
                                  typeof(string),
                                  Assert.IsType <ExtendedTypeReference>(t.Type).Type.Source));
        }
        public void DeclareLocation()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor();

            // act
            IDirectiveTypeDescriptor desc = descriptor;

            desc.Name("Foo");
            desc.Location(DirectiveLocation.Enum);
            desc.Location(DirectiveLocation.Enum);
            desc.Location(DirectiveLocation.EnumValue);

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Collection(description.Locations,
                              t => Assert.Equal(DirectiveLocation.Enum, t),
                              t => Assert.Equal(DirectiveLocation.EnumValue, t));
        }
        public void DeclareArgumentAndSpecifyType()
        {
            // arrange
            var descriptor = new DirectiveTypeDescriptor <CustomDirective>();

            // act
            IDirectiveTypeDescriptor <CustomDirective> desc = descriptor;

            desc.Argument(t => t.FieldA).Type <NonNullType <StringType> >();

            // assert
            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            Assert.Collection(description.Arguments,
                              t => Assert.Equal(
                                  typeof(NonNullType <StringType>),
                                  t.TypeReference.ClrType),
                              t => Assert.Equal(
                                  typeof(string),
                                  t.TypeReference.ClrType));
        }
示例#30
0
        private void Initialize(Action <IDirectiveTypeDescriptor> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            DirectiveTypeDescriptor descriptor = CreateDescriptor();

            configure(descriptor);

            DirectiveTypeDescription description =
                descriptor.CreateDescription();

            ClrType     = description.ClrType;
            SyntaxNode  = description.SyntaxNode;
            Name        = description.Name;
            Description = description.Description;
            Locations   = description.Locations.ToList().AsReadOnly();
            Arguments   = new FieldCollection <InputField>(
                description.Arguments.Select(t => new InputField(t)));
            _middleware = description.Middleware;
        }