public void Subscribe_NullObject_ShouldThrowException() { // Arrange IMessageBus <DummyMessage> messageBus = new MemoryMessageBus <DummyMessage>(); // Act, Assert Assert.Throws <ArgumentNullException>(() => messageBus.Subscribe <DummyMessage>(null)); }
public void Publish_WithHandlerAndNullObject_ShouldThrowException() { // Arrange IMessageBus <DummyMessage> messageBus = new MemoryMessageBus <DummyMessage>(); IHandler <DummyMessage> fakeMessageHandler = Mock.Of <IHandler <DummyMessage> >(); // Act messageBus.Subscribe(fakeMessageHandler); // Assert Assert.Throws <ArgumentNullException>(() => messageBus.Publish <DummyMessage>(null)); }
public void Subscribe_WhenUsingDisposable_ShouldUnsubscribe() { // Arrange IMessageBus <DummyMessage> messageBus = new MemoryMessageBus <DummyMessage>(); Mock <IHandler <DummyMessage> > handlerMock = new Mock <IHandler <DummyMessage> >(); IHandler <DummyMessage> fakeMessageHandler = handlerMock.Object; // Act using (IDisposable unsubscribable = messageBus.Subscribe(fakeMessageHandler)); messageBus.Publish(new DummyMessage()); // Assert handlerMock.Verify(m => m.Handle(It.IsNotNull <DummyMessage>()), Times.Never); }
public void Subscribe_OneHandler_ShouldContainOneHandler() { // Arrange IMessageBus <DummyMessage> messageBus = new MemoryMessageBus <DummyMessage>(); Mock <IHandler <DummyMessage> > handlerMock = new Mock <IHandler <DummyMessage> >(); IHandler <DummyMessage> fakeMessageHandler = handlerMock.Object; // Act messageBus.Subscribe(fakeMessageHandler); messageBus.Publish(new DummyMessage()); // Assert handlerMock.Verify(m => m.Handle(It.IsNotNull <DummyMessage>()), Times.Once); }
public void Publish_FakeMessage_ShouldInvokeOneHandler() { // Arrange IMessageBus <DummyMessage> messageBus = new MemoryMessageBus <DummyMessage>(); Mock <IHandler <DummyMessage> > mock = new Mock <IHandler <DummyMessage> >(); mock.Setup(x => x.Handle(It.IsNotNull <DummyMessage>())); IHandler <DummyMessage> fakeMessageHandler = mock.Object; DummyMessage dummyMessage = new DummyMessage(); // Act messageBus.Subscribe(fakeMessageHandler); messageBus.Publish(dummyMessage); // Assert mock.Verify(m => m.Handle(It.IsNotNull <DummyMessage>()), Times.Once); }
private static void Main() { // units of work IComparer <Event <uint> > comparer = CreateEventComparer(); IEventStore <uint, Event <uint> > eventStore = new MemoryEventStore <uint, Event <uint> >(comparer); IUnitOfWork aggregatesUnitOfWork = new AggregateUnitOfWorkFactory().Create(eventStore); IUnitOfWork domainUnitOfWork = new DomainUnitOfWorkFactory().Create(); // messaging IMessageBus <object> eventBus = new MemoryMessageBus <object>(); OrderCommandsHandler orderCommandsHandler = new OrderCommandsHandler(aggregatesUnitOfWork); eventBus.Subscribe <CreateOrderCommand>(orderCommandsHandler); eventBus.Subscribe <ChangeOrderDateCommand>(orderCommandsHandler); eventBus.Subscribe <DeleteOrderCommand>(orderCommandsHandler); OrderEventsHandler orderEventsHandler = new OrderEventsHandler(domainUnitOfWork, eventBus); eventBus.Subscribe <OrderCreatedEvent>(orderEventsHandler); eventBus.Subscribe <OrderDateChangedEvent>(orderEventsHandler); eventBus.Subscribe <OrderDeletedEvent>(orderEventsHandler); // commands simulation uint iterations = 3; for (uint i = 0; i < iterations; i++) { eventBus.Publish(new CreateOrderCommand(i)); eventBus.Publish(new ChangeOrderDateCommand(i, DateTime.Now.AddDays(1))); eventBus.Publish(new DeleteOrderCommand(i)); } for (uint i = 0; i < iterations; i++) { OrderDto found = domainUnitOfWork.GetRepository <OrderDto>().GetById(i); Console.WriteLine($"{nameof(OrderDto.Id)}: {found.Id}"); Console.WriteLine($"{nameof(OrderDto.Date)}: {found.Date}"); } Console.ReadKey(); }