public void GetServiceCollection_WhenCalledWithKafka_ReturnsKafkaServices()
        {
            //Arrange
            var providers = new Providers();

            providers.EventPublisher = "Kafka";

            var selector = new EventPublisherSelector(configuration, providers);

            //Act
            var serviceCollection = selector.GetServiceCollection();

            //Assert
            serviceCollection.Should().NotBeNull();
            serviceCollection.Should().BeOfType <KafkaEventServices>();
        }
예제 #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers().AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
                options.JsonSerializerOptions.IgnoreNullValues = true;
            });;

            var eventPublisherSelector = new EventPublisherSelector(Configuration, Providers);
            var eventServices          = eventPublisherSelector.GetServiceCollection();

            eventServices.Configure(services);

            var writeModelPersistenceSelector = new WriteModelPersistenceSelector(Configuration, Providers);
            var writeModelServices            = writeModelPersistenceSelector.GetServiceCollection();

            writeModelServices.Configure(services);

            var readModelPersistenceSelector = new ReadModelPersistenceSelector(Configuration, Providers);
            var readModelServices            = readModelPersistenceSelector.GetServiceCollection();

            readModelServices.Configure(services);

            services.AddTransient(
                typeof(Budget.Users.Domain.WriteModel.Factories.WriteModelUserFactory),
                typeof(Budget.Users.Domain.WriteModel.Factories.WriteModelUserFactory)
                );

            services.AddTransient(
                typeof(Budget.Users.Domain.WriteModel.Services.ICryptService),
                typeof(Budget.Users.Domain.WriteModel.Services.Sha512CryptService)
                );

            Assembly applicationLayerAssembly = typeof(Budget.Users.Application.Commands.Subscribe.SubscribeHandler).GetTypeInfo().Assembly;

            services.AddMediatR(applicationLayerAssembly);
        }