示例#1
0
        public void Should_resolve_nested_generics()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType("MyParentGeneric<Int32, bool>+MyNestedGeneric<string>", new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyParentGeneric <Int32, bool> .MyNestedGeneric <string>));
        }
示例#2
0
        public void Should_resolve_array_type_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType("MySecondEvent[]", new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MySecondEvent[]));
        }
示例#3
0
        public void Should_resolve_type_id_by_attribute()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyEvent));

            //Assert
            messageTypeId.Should().Be("TestMessageType");
        }
示例#4
0
        public void Should_handle_nested_type()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MySecondEvent.MyNestedClass)), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MySecondEvent.MyNestedClass));
        }
示例#5
0
        public void Should_resolve_nestedType_as_generic_param_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyGenericType <MySecondEvent.MyNestedClass>));

            //Assert
            messageTypeId.Should().Be("MyGenericType<MySecondEvent+MyNestedClass>");
        }
示例#6
0
        public void Should_resolve_nestedType_as_generic_param_type_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType("MyGenericType<MySecondEvent+MyNestedClass>", new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <MySecondEvent.MyNestedClass>));
        }
示例#7
0
        public void Should_resolve_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MySecondEvent));

            //Assert
            messageTypeId.Should().Be("MySecondEvent");
        }
示例#8
0
        public void Should_resolve_generic_type_id_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageTypeId = sut.GetTypeId(typeof(MyGenericType <string>));

            //Assert
            messageTypeId.Should().Be("MyGenericType<String>");
        }
示例#9
0
        public void Should_handle_multi_dimensional_array()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MySecondEvent[][, ])), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MySecondEvent[][, ]));
        }
示例#10
0
        public void Should_handle_compound_generic_array()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MyGenericType <MySecondEvent> [, ])), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <MySecondEvent> [, ]));
        }
示例#11
0
        public void Should_resolve_compound_generic_type_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType("MyGenericType<string, MyGenericType<MySecondEvent>>", new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <string, MyGenericType <MySecondEvent> >));
        }
示例#12
0
        public void Should_handle_generic_type()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType(sut.GetTypeId(typeof(MyGenericType <string>)), new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyGenericType <string>));
        }
示例#13
0
        public void Should_resolve_type_by_attribute()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            var messageType = sut.ResolveType("TestMessageType", new[] { Assembly.GetExecutingAssembly() });

            //Assert
            messageType.Should().Be(typeof(MyEvent));
        }
示例#14
0
文件: Function.cs 项目: VCuzmin/nbb
        private static ContractCommandHandlers GetCommandHandler()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                                       .AddEnvironmentVariables();

            var environment   = Environment.GetEnvironmentVariable("NETCORE_ENVIRONMENT");
            var isDevelopment = string.Equals(environment, "development", StringComparison.OrdinalIgnoreCase);

            if (isDevelopment)
            {
                configurationBuilder.AddUserSecrets(Assembly.GetCallingAssembly());
            }

            var configuration = configurationBuilder.Build();

            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                         .Enrich.FromLogContext()
                         .Enrich.With <CorrelationLogEventEnricher>()
                         .WriteTo.MSSqlServer(configuration.GetConnectionString("Logs"), "Logs", autoCreateSqlTable: true)
                         .CreateLogger();

            var loggerFactory = new LoggerFactory();

            loggerFactory.AddSerilog();

            var stanConnectionProvider  = new StanConnectionProvider(configuration, new Logger <StanConnectionProvider>(loggerFactory), null);
            var topicRegistry           = new DefaultTopicRegistry(configuration);
            var messageTypeRegistry     = new DefaultMessageTypeRegistry();
            var messageSerdes           = new NewtonsoftJsonMessageSerDes(messageTypeRegistry);
            var messagingTopicPublisher = new NatsMessagingTopicPublisher(stanConnectionProvider, new Logger <NatsMessagingTopicPublisher>(loggerFactory));
            var messageBusPublisher     = new MessageBusPublisher(messagingTopicPublisher, topicRegistry, messageSerdes, configuration);

            var scripts         = new Scripts();
            var eventRepository = new AdoNetEventRepository(scripts, new Logger <AdoNetEventRepository>(loggerFactory), new Options());

            var eventStoreSerDes    = new NewtonsoftJsonEventStoreSerDes();
            var eventStore          = new EventStore.EventStore(eventRepository, eventStoreSerDes, new Logger <EventStore.EventStore>(loggerFactory));
            var eventStoreDecorator = new MessagingEventStoreDecorator(eventStore, messageBusPublisher, new MessagingTopicResolver(new Options()));
            var mediator            = new OpenFaaSMediator(configuration, new Logger <OpenFaaSMediator>(loggerFactory));
            var repository          = new EventSourcedRepository <Contract>(eventStoreDecorator, null, mediator, new EventSourcingOptions(), new Logger <EventSourcedRepository <Contract> >(loggerFactory));
            var result = new ContractCommandHandlers(repository);

            //disposables = new List<IDisposable>{stanConnectionProvider};

            return(result);
        }
示例#15
0
        public void Should_fail_resolve_when_multiple_types_by_name()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            void Action()
            {
                sut.ResolveType("SameName", new[] { Assembly.GetExecutingAssembly() });
            }

            //Assert
            ((Action)Action).Should().Throw <ApplicationException>().WithMessage("*multiple*");
        }
示例#16
0
        public void Should_fail_resolve_when_type_not_found()
        {
            //Arrange
            var sut = new DefaultMessageTypeRegistry();

            //Act
            void Action()
            {
                sut.ResolveType("MyNotFoundEvent", new[] { Assembly.GetExecutingAssembly() });
            }

            //Assert
            ((Action)Action).Should().Throw <ApplicationException>().WithMessage("*could not be resolved*");
        }