public async Task Can_combine_domain_event_with_class_events() { // Arrange var eventsManager = new DomainEventsManager(); eventsManager.Register(new Ns03_DomainTestEventHandler()); pipelinesService.PipelineContainer.AddEventPipeline() .AddMiddleware(new Events.PipelineMiddlewares.DomainEventLocatorMiddleware(eventsManager)) .AddMiddleware(new Events.PipelineMiddlewares.EventHandlerLocatorMiddleware( typeof(EventsTests).GetTypeInfo().Assembly)) .AddMiddleware(new Events.PipelineMiddlewares.EventHandlerResolverMiddleware()) .AddMiddleware(new Events.PipelineMiddlewares.EventHandlerExecutorMiddleware { UseParametersResolve = true }); // Act await pipelinesService.RaiseEventAsync(new Ns02_DomainTestEvent()); await pipelinesService.RaiseEventAsync(new Ns03_Event1()); await pipelinesService.RaiseEventAsync(new Ns03_Event2()); await pipelinesService.RaiseEventAsync(new Ns03_Event3()); // Assert Assert.Equal(4, Ns03_EventHandler.CallCount); }
public void Domain_events_can_be_integrated_to_events_pipeline() { // Arrange var eventsManager = new DomainEventsManager(); eventsManager.Register(new Ns02_DomainTestEventHandler()); object Resolver(Type type) { if (type == typeof(IDomainEventsManager)) { return(eventsManager); } return(null); } pipelinesService.ServiceProvider = new FuncServiceProvider(Resolver); pipelinesService.PipelineContainer.AddEventPipeline() .AddMiddleware(new Events.PipelineMiddlewares.DomainEventLocatorMiddleware(eventsManager)) .AddMiddleware(new Events.PipelineMiddlewares.EventHandlerResolverMiddleware()) .AddMiddleware(new Events.PipelineMiddlewares.EventHandlerExecutorMiddleware { UseParametersResolve = true }); var ev = new Ns02_DomainTestEvent(); // Act pipelinesService.RaiseEvent(ev); // Assert Assert.Equal(42, ev.Param); }