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>();
            }));
        }
Exemple #2
0
        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>();
            }));
        }