public void CreateSourcePropertyResolver() { // arrange Mock <IResolverContext> context = new Mock <IResolverContext>(MockBehavior.Strict); context.Setup(t => t.Parent <FooType>()).Returns(new FooType()); FieldReference fieldReference = new FieldReference("type", "field"); FieldResolverDescriptor descriptor = FieldResolverDescriptor .CreateSourceProperty(fieldReference, typeof(FooType), typeof(FooType).GetProperty("BarProperty")); // act FieldResolverBuilder fieldResolverBuilder = new FieldResolverBuilder(); FieldResolver[] resolvers = fieldResolverBuilder.Build( new[] { descriptor }).ToArray(); // assert Assert.Collection(resolvers, r => { Assert.Equal("type", r.TypeName); Assert.Equal("field", r.FieldName); Assert.NotNull(r.Resolver); object result = r.Resolver(context.Object, CancellationToken.None); Assert.Equal("Hello World Property", result); }); }
public void CreateAsyncCollectionMethodResolver() { // arrange Mock <IResolverContext> context = new Mock <IResolverContext>(MockBehavior.Strict); context.Setup(t => t.Parent <FooType>()).Returns(new FooType()); context.Setup(t => t.Service <FooTypeResolver>()).Returns(new FooTypeResolver()); FieldResolverArgumentDescriptor argumentDescriptor = new FieldResolverArgumentDescriptor( "foo", "b", FieldResolverArgumentKind.Source, typeof(FooType)); FieldReference fieldReference = new FieldReference("type", "field"); FieldResolverDescriptor descriptor = FieldResolverDescriptor .CreateCollectionMethod(fieldReference, typeof(FooTypeResolver), typeof(FooType), typeof(FooTypeResolver).GetMethod("BarResolverAsync"), true, new[] { argumentDescriptor }); // act FieldResolverBuilder fieldResolverBuilder = new FieldResolverBuilder(); FieldResolver[] resolvers = fieldResolverBuilder.Build( new[] { descriptor }).ToArray(); // assert Assert.Collection(resolvers, r => { Assert.Equal("type", r.TypeName); Assert.Equal("field", r.FieldName); Assert.NotNull(r.Resolver); object result = ((Task <object>)r.Resolver(context.Object, CancellationToken.None)).Result; Assert.Equal("Hello World_123", result); }); }