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); }
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); }
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)); }
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)); }