Ejemplo n.º 1
0
        public void Should_raise_prepared_event_when_barista_completes_preparation()
        {
            var id = Guid.NewGuid();
            var handler = new BaristaOrderCommandHandlers(repository);
            var e = new OrderPlaced(id, Guid.NewGuid(), 1);
            var eventHandler = new CashierOrderEventHandler(repository);
            eventHandler.Apply(e);

            var order = repository.GetById<BaristaOrder>(id);
            Assert.False(order.IsCompleted);

            var command = new CompleteOrder(id, order.Version);
            handler.Handle(command);

            order = repository.GetById<BaristaOrder>(id);
            Assert.True(order.IsCompleted);
        }
Ejemplo n.º 2
0
        public void Should_raise_prepared_event_when_barista_completes_preparation()
        {
            var id           = Guid.NewGuid();
            var handler      = new BaristaOrderCommandHandlers(repository);
            var e            = new OrderPlaced(id, Guid.NewGuid(), 1);
            var eventHandler = new CashierOrderEventHandler(repository);

            eventHandler.Apply(e);

            var order = repository.GetById <BaristaOrder>(id);

            Assert.False(order.IsCompleted);

            var command = new CompleteOrder(id, order.Version);

            handler.Handle(command);

            order = repository.GetById <BaristaOrder>(id);
            Assert.True(order.IsCompleted);
        }
Ejemplo n.º 3
0
        private void ConfigureHandlers()
        {
            var b = RabbitHutch.CreateBus("host=localhost");

            var messageBusEndPoint = "barista";
            var topicFilter        = "Cashier.Common.Events";

            var bus = new RabbitMqBus(b);

            ServiceLocator.Bus = bus;

            //Should get this from a config setting instead of hardcoding it.
            var eventStoreConnection = EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 12900));

            eventStoreConnection.ConnectAsync().Wait();
            var repository = new EventStoreRepository(eventStoreConnection, bus);

            ServiceLocator.OrderCommands = new BaristaOrderCommandHandlers(repository);

            var cashierEventHandler = new CashierOrderEventHandler(repository);

            ServiceLocator.CahierEventHandler = cashierEventHandler;

            var eventMappings = new EventHandlerDiscovery()
                                .Scan(cashierEventHandler)
                                .Handlers;

            b.Subscribe <PublishedMessage>(messageBusEndPoint,
                                           m =>
            {
                Aggregate handler;
                var messageType  = Type.GetType(m.MessageTypeName);
                var handlerFound = eventMappings.TryGetValue(messageType, out handler);
                if (handlerFound)
                {
                    var @event = JsonConvert.DeserializeObject(m.SerialisedMessage, messageType);
                    handler.AsDynamic().ApplyEvent(@event, ((Event)@event).Version);
                }
            },
                                           q => q.WithTopic(topicFilter));
        }
Ejemplo n.º 4
0
        private void ConfigureHandlers()
        {
            var b = RabbitHutch.CreateBus("host=localhost");

            var messageBusEndPoint = "barista";
            var topicFilter = "Cashier.Common.Events";

            var bus = new RabbitMqBus(b);
            ServiceLocator.Bus = bus;

            //Should get this from a config setting instead of hardcoding it.
            var eventStoreConnection = EventStoreConnection.Create(new IPEndPoint(IPAddress.Loopback, 12900));
            eventStoreConnection.ConnectAsync().Wait();
            var repository = new EventStoreRepository(eventStoreConnection, bus);

            ServiceLocator.OrderCommands = new BaristaOrderCommandHandlers(repository);

            var cashierEventHandler = new CashierOrderEventHandler(repository);
            ServiceLocator.CahierEventHandler = cashierEventHandler;

            var eventMappings = new EventHandlerDiscovery()
                .Scan(cashierEventHandler)
                .Handlers;

            b.Subscribe<PublishedMessage>(messageBusEndPoint,
            m =>
            {
                Aggregate handler;
                var messageType = Type.GetType(m.MessageTypeName);
                var handlerFound = eventMappings.TryGetValue(messageType, out handler);
                if (handlerFound)
                {
                    var @event = JsonConvert.DeserializeObject(m.SerialisedMessage, messageType);
                    handler.AsDynamic().ApplyEvent(@event, ((Event)@event).Version);
                }
            },
            q => q.WithTopic(topicFilter));
        }