Exemple #1
0
        public static void Compile(
            IDictionary <FieldReference, RegisteredResolver> resolvers)
        {
            if (resolvers == null)
            {
                throw new ArgumentNullException(nameof(resolvers));
            }

            foreach (var item in resolvers.ToArray())
            {
                RegisteredResolver registered = item.Value;
                if (registered.Field is FieldMember member)
                {
                    ResolverDescriptor descriptor =
                        registered.IsSourceResolver
                            ? new ResolverDescriptor(
                            registered.SourceType,
                            member)
                            : new ResolverDescriptor(
                            registered.ResolverType,
                            registered.SourceType,
                            member);
                    resolvers[item.Key] = registered.WithField(
                        ExpressionCompiler.Resolve.Compile(descriptor));
                }
            }
        }
        public void Create_With_ResolverType_Null()
        {
            var descriptor = new ResolverDescriptor(
                typeof(string),
                new FieldMember("a", "b", typeof(object).GetMembers().First()));

            Assert.Equal(typeof(string), descriptor.SourceType);
            Assert.Null(descriptor.ResolverType);
            Assert.NotNull(descriptor.Field.Member);
            Assert.Equal("a", descriptor.Field.TypeName.Value);
            Assert.Equal("b", descriptor.Field.FieldName.Value);
        }
Exemple #3
0
        public void AsyncResolverMethodGenerator_GenerateWithContext()
        {
            // arrange
            ResolverDescriptor descriptor = CreateDescriptor(ArgumentKind.Context);

            // act
            var    source    = new StringBuilder();
            var    generator = new AsyncResolverMethodGenerator();
            string result    = generator.Generate("abc", descriptor);

            // assert
            result.MatchSnapshot();
        }
Exemple #4
0
        public void CreateAsyncCollectionMethodResolver()
        {
            // arrange
            var context = new Mock <IResolverContext>(MockBehavior.Strict);

            context.Setup(t => t.Parent <FooType>())
            .Returns(new FooType());
            context.Setup(t => t.Resolver <FooTypeResolver>())
            .Returns(new FooTypeResolver());
            context.Setup(t => t.RequestAborted)
            .Returns(CancellationToken.None);

            var argumentDescriptor =
                new ArgumentDescriptor(
                    "foo", "b", ArgumentKind.Source,
                    typeof(FooType),
                    null);

            var fieldMember = new FieldMember(
                "type", "field",
                typeof(FooTypeResolver).GetMethod("BarResolverAsync"));

            var descriptor = new ResolverDescriptor(
                typeof(FooTypeResolver),
                typeof(FooType),
                fieldMember,
                new[] { argumentDescriptor });

            // act
            var resolverBuilder = new ResolverBuilder();

            resolverBuilder.AddDescriptor(descriptor);
            ResolverBuilderResult result = resolverBuilder.Build();

            // assert
            Assert.Collection(result.Resolvers,
                              r =>
            {
                Assert.Equal("type", r.TypeName);
                Assert.Equal("field", r.FieldName);
                Assert.NotNull(r.Resolver);

                object resolvedValue = r.Resolver(
                    context.Object)
                                       .Result;
                Assert.Equal("Hello World_123", resolvedValue);
            });
        }
        public void ResolverPropertyGenerator_Generate()
        {
            // arrange
            Type sourceType = typeof(GeneratorTestDummy);

            var fieldMember = new FieldMember(
                "Foo", "bar",
                GetProperty());

            var descriptor = new ResolverDescriptor(sourceType, fieldMember);

            // act
            var    source    = new StringBuilder();
            var    generator = new ResolverPropertyGenerator();
            string result    = generator.Generate("abc", descriptor);

            // assert
            result.MatchSnapshot();
        }
        public void SyncResolverMethodGenerator_GenerateWithSourceArgumentAndTwoArguments()
        {
            // arrange
            Type sourceType = typeof(GeneratorTestDummy);

            var fieldMember = new FieldMember(
                "Foo", "bar",
                GetMethod <GeneratorTestDummyResolver>("GetFoo", 3));

            var descriptor = new ResolverDescriptor(sourceType, fieldMember);

            // act
            var    source    = new StringBuilder();
            var    generator = new SyncResolverMethodGenerator();
            string result    = generator.Generate("abc", descriptor);

            // assert
            Assert.Equal(Snapshot.Current(), Snapshot.New(result));
        }
Exemple #7
0
        public void SyncResolverMethodGenerator_GenerateWithoutArguments()
        {
            // arrange
            Type sourceType = typeof(GeneratorTestDummy);

            var fieldMember = new FieldMember(
                "Foo", "bar",
                GetMethod <GeneratorTestDummyResolver>("GetFoo", 0));

            var descriptor = new ResolverDescriptor(sourceType, fieldMember);

            // act
            var    source    = new StringBuilder();
            var    generator = new SyncResolverMethodGenerator();
            string result    = generator.Generate("abc", descriptor);

            // assert
            result.Snapshot();
        }
 private void CompileResolvers()
 {
     foreach (KeyValuePair <FieldReference, RegisteredResolver> item in _resolvers.ToArray())
     {
         RegisteredResolver registered = item.Value;
         if (registered.Field is FieldMember member)
         {
             ResolverDescriptor descriptor =
                 registered.IsSourceResolver
                     ? new ResolverDescriptor(
                     registered.SourceType,
                     member)
                     : new ResolverDescriptor(
                     registered.ResolverType,
                     registered.SourceType,
                     member);
             _resolvers[item.Key] = registered.WithField(
                 ResolverCompiler.Resolve.Compile(descriptor));
         }
     }
 }