public async Task ExecuteDeferredEvents_WhenCalled_ShouldExecuteEventHandlersForEventsFiredInHandlers() { // Arrange var triggerEvent = new FakeEvent { Id = 1 }; var handlerFactory = new MessageHandlerRegistry(); var mediator = new Mediator(handlerFactory.MultiInstanceFactory, handlerFactory.SingleInstanceFactory); handlerFactory.AddHandlersForEvent(new List<IEventHandler<FakeEvent>> { new HandlerDeferringMultipleEvents(mediator), new HandlerDeferringSingleEvent(mediator), new HandlerWithoutAdditionalEvents() }); handlerFactory.AddHandlersForEvent(new List<IEventHandler<FakeEventFromHandler>> { new DependentEventHandler() }); handlerFactory.AddHandlersForEvent(new List<IEventHandler<FakeEventTwoFromHandler>> { _autoSubstitute.SubstituteFor<ChainedEventHandler>() }); // Act mediator.DeferEvent(triggerEvent); await mediator.ExecuteDeferredEvents(); // Assert foreach (var handler in handlerFactory.GetHandlersFor<FakeEventTwoFromHandler>()) { handler.Received(1).Handle(Arg.Any<FakeEventTwoFromHandler>()).FireAndForget(); } }
public async Task ExecuteDeferredEvents_WhenCalled_ShouldCallAllEventHandlers() { // Arrange var @event = new FakeEvent { Id = 1 }; var handlerFactory = new MessageHandlerRegistry(); var mediator = new Mediator(handlerFactory.MultiInstanceFactory, handlerFactory.SingleInstanceFactory); handlerFactory.AddHandlersForEvent(new List<IEventHandler<FakeEvent>> { _autoSubstitute.SubstituteFor<HandlerDeferringMultipleEvents>(mediator), _autoSubstitute.SubstituteFor<HandlerDeferringSingleEvent>(mediator), _autoSubstitute.SubstituteFor<HandlerWithoutAdditionalEvents>() }); mediator.DeferEvent(@event); // Act await mediator.ExecuteDeferredEvents(); // Assert foreach (var handler in handlerFactory.GetHandlersFor<FakeEvent>()) { handler.Received().Handle(Arg.Any<FakeEvent>()).FireAndForget(); } }
public async Task ExecuteDeferredEvents_WhenCalledWithoutRegisteredHandlers_ShouldNotCallAnyHandlers() { // Arrange var @event = new FakeEvent { Id = 1 }; var handlerFactory = new MessageHandlerRegistry(); var mediator = new Mediator(handlerFactory.MultiInstanceFactory, handlerFactory.SingleInstanceFactory); mediator.DeferEvent(@event); // Act await mediator.ExecuteDeferredEvents(); // Assert foreach (var handler in handlerFactory.GetHandlersFor<FakeEvent>()) { handler.DidNotReceive().Handle(Arg.Any<FakeEvent>()).FireAndForget(); } }
public async Task ExecuteDeferredEvents_WhenCalledWithoutRegisteredHandlers_ShouldNotCallAnyHandlers() { // Arrange var @event = new FakeEvent { Id = 1 }; var handlerFactory = new MessageHandlerRegistry(); var mediator = new Mediator(handlerFactory.MultiInstanceFactory, handlerFactory.SingleInstanceFactory); mediator.DeferEvent(@event); // Act await mediator.ExecuteDeferredEvents(); // Assert foreach (var handler in handlerFactory.GetHandlersFor <FakeEvent>()) { handler.DidNotReceive().Handle(Arg.Any <FakeEvent>()).FireAndForget(); } }
public async Task ExecuteDeferredEvents_WhenCalled_ShouldExecuteEventHandlersForEventsFiredInHandlers() { // Arrange var triggerEvent = new FakeEvent { Id = 1 }; var handlerFactory = new MessageHandlerRegistry(); var mediator = new Mediator(handlerFactory.MultiInstanceFactory, handlerFactory.SingleInstanceFactory); handlerFactory.AddHandlersForEvent(new List <IEventHandler <FakeEvent> > { new HandlerDeferringMultipleEvents(mediator), new HandlerDeferringSingleEvent(mediator), new HandlerWithoutAdditionalEvents() }); handlerFactory.AddHandlersForEvent(new List <IEventHandler <FakeEventFromHandler> > { new DependentEventHandler() }); handlerFactory.AddHandlersForEvent(new List <IEventHandler <FakeEventTwoFromHandler> > { _autoSubstitute.SubstituteFor <ChainedEventHandler>() }); // Act mediator.DeferEvent(triggerEvent); await mediator.ExecuteDeferredEvents(); // Assert foreach (var handler in handlerFactory.GetHandlersFor <FakeEventTwoFromHandler>()) { handler.Received(1).Handle(Arg.Any <FakeEventTwoFromHandler>()).FireAndForget(); } }