private static Schema CreateSchema(int executionDepth) { var repository = new CharacterRepository(); var eventRegistry = new InMemoryEventRegistry(); var services = new Dictionary <Type, object>(); services[typeof(CharacterRepository)] = repository; services[typeof(Query)] = new Query(repository); services[typeof(Mutation)] = new Mutation(); services[typeof(Subscription)] = new Subscription(); services[typeof(IEventSender)] = eventRegistry; services[typeof(IEventRegistry)] = eventRegistry; var serviceResolver = new Func <Type, object>( t => { if (services.TryGetValue(t, out object s)) { return(s); } return(null); }); Mock <IServiceProvider> serviceProvider = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProvider.Setup(t => t.GetService(It.IsAny <Type>())) .Returns(serviceResolver); return(Schema.Create(c => { c.Options.MaxExecutionDepth = executionDepth; c.RegisterServiceProvider(serviceProvider.Object); c.RegisterDataLoader <HumanDataLoader>(); c.RegisterQueryType <QueryType>(); c.RegisterMutationType <MutationType>(); c.RegisterSubscriptionType <SubscriptionType>(); c.RegisterType <HumanType>(); c.RegisterType <DroidType>(); c.RegisterType <EpisodeType>(); })); }
private static Schema CreateSchema() { CharacterRepository repository = new CharacterRepository(); Dictionary <Type, object> services = new Dictionary <Type, object>(); services[typeof(CharacterRepository)] = repository; services[typeof(Query)] = new Query(repository); services[typeof(Mutation)] = new Mutation(); Func <Type, object> serviceResolver = new Func <Type, object>( t => { if (services.TryGetValue(t, out object s)) { return(s); } return(null); }); Mock <IServiceProvider> serviceProvider = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProvider.Setup(t => t.GetService(It.IsAny <Type>())) .Returns(serviceResolver); return(Schema.Create(c => { c.RegisterServiceProvider(serviceProvider.Object); c.RegisterDataLoader <HumanDataLoader>(); c.RegisterQueryType <QueryType>(); c.RegisterMutationType <MutationType>(); c.RegisterType <HumanType>(); c.RegisterType <DroidType>(); c.RegisterType <EpisodeType>(); })); }