/// <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<TSchema>.</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); }
/// <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<TSchema>.</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); }