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); }
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(); }
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)); }
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)); } } }