コード例 #1
0
        public void AddServiceConfiguration_invokes_configuration_delegate(NybusConfigurator sut, IServiceCollection services, Action <IServiceCollection> configurationDelegate)
        {
            sut.AddServiceConfiguration(configurationDelegate);

            sut.ConfigureServices(services);

            Mock.Get(configurationDelegate).Verify(p => p(services), Times.Once);
        }
コード例 #2
0
        public void Configure_(NybusConfigurator sut, IServiceProvider serviceProvider, INybusConfiguration configuration, Action <INybusConfiguration> configurationDelegate)
        {
            sut.Configure(configurationDelegate);

            sut.CustomizeConfiguration(serviceProvider, configuration);

            Mock.Get(configurationDelegate).Verify(p => p(configuration));
        }
コード例 #3
0
        public void UseConfiguration_uses_specified_section(NybusConfigurator sut, IConfigurationSection configuration, string sectionName)
        {
            sut.UseConfiguration(configuration, sectionName);

            Mock.Get(configuration).Verify(p => p.GetSection(sectionName), Times.Once);

            Assert.That(sut.Configuration, Is.SameAs(configuration.GetSection(sectionName)));
        }
コード例 #4
0
        public void AddSubscription_configures(NybusConfigurator sut, ISubscriptionBuilder subscriptionBuilder, Action <ISubscriptionBuilder> subscriptionDelegate)
        {
            sut.AddSubscription(subscriptionDelegate);

            sut.ConfigureBuilder(subscriptionBuilder);

            Mock.Get(subscriptionDelegate).Verify(p => p(subscriptionBuilder), Times.Once);
        }
コード例 #5
0
        public void AddServiceConfiguration_configures_given_service(NybusConfigurator sut, Type serviceType, IServiceCollection services)
        {
            sut.AddServiceConfiguration(svc => svc.AddSingleton(serviceType));

            sut.ConfigureServices(services);

            Mock.Get(services).Verify(p => p.Add(It.Is <ServiceDescriptor>(sd => sd.ServiceType == serviceType)));
        }
        public void Bus_can_be_built(ServiceCollection services, NybusConfigurator nybusConfigurator, SubscriptionsConfigurator subscriptionsConfigurator)
        {
            services.AddLogging();

            services.AddNybusLegacy(nybusConfigurator, subscriptionsConfigurator);

            var serviceProvider = services.BuildServiceProvider();

            var bus = serviceProvider.GetRequiredService <IBus>();

            Assert.That(bus, Is.Not.Null);
        }
コード例 #7
0
        public void UseConfiguration_uses_default_sectionName(NybusConfigurator sut, IConfigurationSection configuration)
        {
            sut.UseConfiguration(configuration);

            Mock.Get(configuration).Verify(p => p.GetSection("Nybus"), Times.Once);
        }
コード例 #8
0
 public void UseConfiguration_requires_sectionName(NybusConfigurator sut, IConfigurationSection configuration)
 {
     Assert.Throws <ArgumentNullException>(() => sut.UseConfiguration(configuration, null));
 }
コード例 #9
0
 public void UseConfiguration_requires_configuration(NybusConfigurator sut, string sectionName)
 {
     Assert.Throws <ArgumentNullException>(() => sut.UseConfiguration(null, sectionName));
 }
コード例 #10
0
 public void AddSubscription_requires_non_null_subscription_delegate(NybusConfigurator sut)
 {
     Assert.Throws <ArgumentNullException>(() => sut.AddSubscription(null));
 }
コード例 #11
0
        public static IServiceCollection AddNybus(this IServiceCollection services, Action <INybusConfigurator> configure)
        {
            var configurator = new NybusConfigurator();

            configurator.RegisterErrorFilterProvider <RetryErrorFilterProvider>();
            configurator.RegisterErrorFilterProvider <DiscardErrorFilterProvider>();

            services.AddSingleton <DiscardErrorFilter>();

            configure(configurator);

            services.AddSingleton(sp =>
            {
                var loggerFactory = sp.GetRequiredService <ILoggerFactory>();
                var builder       = new NybusHostBuilder(loggerFactory);

                return(builder);
            });

            services.AddSingleton <INybusHostConfigurationFactory, NybusHostConfigurationFactory>();

            services.AddSingleton(sp =>
            {
                var factory = sp.GetRequiredService <INybusHostConfigurationFactory>();
                var options = sp.GetRequiredService <NybusHostOptions>();

                var configuration = factory.CreateConfiguration(options);

                configurator.CustomizeConfiguration(sp, configuration);

                return(configuration);
            });

            services.AddSingleton(sp =>
            {
                var options = new NybusHostOptions();

                configurator.Configuration?.Bind(options);

                return(options);
            });

            services.AddSingleton <IMessageDescriptorStore, MessageDescriptorStore>();

            configurator.ConfigureServices(services);

            services.AddSingleton(sp =>
            {
                var engine        = sp.GetRequiredService <IBusEngine>();
                var builder       = sp.GetRequiredService <NybusHostBuilder>();
                var configuration = sp.GetRequiredService <NybusConfiguration>();

                configurator.ConfigureBuilder(builder);

                return(builder.BuildHost(engine, sp, configuration));
            });

            services.AddSingleton <IBusHost>(sp => sp.GetRequiredService <NybusHost>());

            services.AddSingleton <IBus>(sp => sp.GetRequiredService <NybusHost>());

            return(services);
        }
コード例 #12
0
        public static IServiceCollection AddNybusLegacy(this IServiceCollection services, NybusConfigurator nybusConfigurator = null, SubscriptionsConfigurator subscriptionsConfigurator = null)
        {
            services.AddHostedService <NybusLegacyHostedService>();

            services.AddSingleton <IContainer, ServiceProviderContainer>();

            services.AddSingleton(Clock.Default);

            services.AddSingleton <ILoggerFactory, NybusLoggerFactoryAdapter>();

            services.AddSingleton <NybusOptions>();

            services.AddSingleton <IBusEngine, InMemoryBusEngine>();

            services.AddSingleton <IBusBuilder>(sp =>
            {
                var container = sp.GetRequiredService <IContainer>();

                var engine = sp.GetRequiredService <IBusEngine>();

                var loggerFactory = sp.GetRequiredService <ILoggerFactory>();

                var options = new NybusOptions
                {
                    Container     = container,
                    LoggerFactory = loggerFactory
                };

                nybusConfigurator?.Invoke(options);

                var builder = new NybusBusBuilder(engine, options);

                subscriptionsConfigurator?.Invoke(builder);

                return(builder);
            });

            services.AddSingleton(sp =>
            {
                var builder = sp.GetRequiredService <IBusBuilder>();

                return(builder.Build());
            });

            return(services);
        }
        public void SubscriptionsConfigurator_delegate_is_invoked(ServiceCollection services, NybusConfigurator nybusConfigurator, SubscriptionsConfigurator subscriptionsConfigurator)
        {
            services.AddLogging();

            services.AddNybusLegacy(nybusConfigurator, subscriptionsConfigurator);

            var serviceProvider = services.BuildServiceProvider();

            var bus = serviceProvider.GetRequiredService <IBus>();

            Assume.That(bus, Is.Not.Null);

            Mock.Get(subscriptionsConfigurator).Verify(p => p(It.IsAny <IBusBuilder>()));
        }