private static Schema CreateSchema() { var repository = new CharacterRepository(); var eventRegistry = new InMemoryEventRegistry(); var registry = new DataLoaderRegistry(new EmptyServiceProvider()); var services = new Dictionary <Type, object> { [typeof(CharacterRepository)] = repository, [typeof(Query)] = new Query(repository), [typeof(Mutation)] = new Mutation(), [typeof(Subscription)] = new Subscription(), [typeof(IEventSender)] = eventRegistry, [typeof(IEventRegistry)] = eventRegistry, [typeof(IDataLoaderRegistry)] = registry }; var serviceResolver = new Func <Type, object>( t => { if (services.TryGetValue(t, out var s)) { return(s); } return(null); }); var serviceProvider = new Mock <IServiceProvider>( MockBehavior.Strict); serviceProvider.Setup(t => t.GetService(It.IsAny <Type>())) .Returns(serviceResolver); registry.Register(typeof(HumanDataLoader).FullName, s => new HumanDataLoader(repository)); return(Schema.Create(c => { c.RegisterServiceProvider(serviceProvider.Object); c.RegisterQueryType <QueryType>(); c.RegisterMutationType <MutationType>(); c.RegisterSubscriptionType <SubscriptionType>(); c.RegisterType <HumanType>(); c.RegisterType <DroidType>(); c.RegisterType <EpisodeType>(); })); }
public async Task TestAuthorResolver() { // arrange /*IServiceProvider sp = new ServiceCollection() * .AddDataLoaderRegistry() * .AddSingleton<IAuthorService, InMemoryAuthorService>() * .BuildServiceProvider();*/ IServiceProvider sp = new ServiceCollection() .BuildServiceProvider(); var x = sp.GetService <IResolverContext>(); ISchema schema = Schema.Create(c => { c.RegisterQueryType <QueryType>(); }); ObjectType type = schema.GetType <ObjectType>("QueryType"); ObjectField field = type.Fields["authorByCountry"]; Mock <IResolverContext> resolverContexMock = new Mock <IResolverContext>(); resolverContexMock.Setup(c => c.Service <IAuthorService>()).Returns(new InMemoryAuthorService()); var dl = new DataLoaderRegistry(sp); dl.Register <string, Author>("authorByCountry", (IReadOnlyList <string> keys) => { List <Author> a = new List <Author>(); return(Task.FromResult(a.ToLookup(a1 => a1.Country))); }); resolverContexMock.Setup(c => c.Service <IEnumerable <IDataLoaderRegistry> >()).Returns(new List <DataLoaderRegistry>(new[] { dl })); // resolverContexMock.Setup(c => c.Service<IAuthorService>()).Returns(sp.GetService<IAuthorService>); // resolverContexMock.Setup(c => c.ScopedContextData.) // act var result = await field.Resolver(resolverContexMock.Object); // assert }