Esempio n. 1
0
        /// <summary>
        /// Adds the ability for this test server to raise subscription events.
        /// </summary>
        /// <typeparam name="TSchema">The type of schema being configured.</typeparam>
        /// <param name="serverBuilder">The server builder.</param>
        /// <returns>GraphQL.AspNet.Interfaces.Configuration.ISchemaBuilder&lt;TSchema&gt;.</returns>
        public static TestServerBuilder <TSchema> AddSubscriptionPublishing <TSchema>(this TestServerBuilder <TSchema> serverBuilder)
            where TSchema : class, ISchema
        {
            serverBuilder.AddSchemaBuilderAction(builder =>
            {
                var extension = new SubscriptionPublisherSchemaExtension <TSchema>();
                builder.Options.RegisterExtension(extension);

                builder.QueryExecutionPipeline.AddMiddleware <PublishRaisedSubscriptionEventsMiddleware <TSchema> >();
                builder.AsServiceCollection().TryAddSingleton <SubscriptionPublicationService>();
                builder.AsServiceCollection().AddScoped <ISubscriptionEventPublisher, InProcessSubscriptionPublisher>();
            });

            return(serverBuilder);
        }
Esempio n. 2
0
        /// <summary>
        /// Adds subscription server support to the test server builder.
        /// </summary>
        /// <typeparam name="TSchema">The type of the schema the builder supports.</typeparam>
        /// <param name="serverBuilder">The server builder.</param>
        /// <param name="options">The options to configure the schema with.</param>
        /// <returns>TestServerBuilder&lt;TSchema&gt;.</returns>
        public static TestServerBuilder <TSchema> AddSubscriptionServer <TSchema>(
            this TestServerBuilder <TSchema> serverBuilder,
            Action <SubscriptionServerOptions <TSchema> > options = null)
            where TSchema : class, ISchema
        {
            var subscriptionsOptions = new SubscriptionServerOptions <TSchema>();

            options?.Invoke(subscriptionsOptions);

            serverBuilder.AddSchemaBuilderAction(schemaBuilder =>
            {
                DefaultSubscriptionBuilderExtensions
                .AddSubscriptionServer(schemaBuilder, options);
            });

            return(serverBuilder);
        }