public async Task InvokeMessageHandlersForEventMessageAsync_ShouldInvokeAllRegisteredPerformanceMonitorsWithAppropriateErrorInfoWhenAHandlerBlows() { var performanceMonitor = new Mock <IEventStreamSubscriberPerformanceMonitor>(); var expectedException = new InvalidTimeZoneException("Summat"); var handler = new Mock <IHandleEventsOf <object> >(); handler.Setup(x => x.Handle(It.IsAny <object>())).Throws(expectedException); var called = false; performanceMonitor.Setup(x => x.Accept(StreamName, typeof(object).FullName, EventDate, 1, It.IsAny <IEnumerable <KeyValuePair <Type, Exception> > >())).Callback <string, string, DateTime, int, IEnumerable <KeyValuePair <Type, Exception> > >( (stream, type, createdDate, handlerCount, exceptions) => { called = true; exceptions.Should().BeEquivalentTo(new[] { new KeyValuePair <Type, Exception>(handler.Object.GetType(), expectedException) }); }); var builder = new EventStreamSubscriberSettingsBuilder(_eventStoreHttpConnectionMock.Object, _eventHandlerResolverMock.Object, _streamPositionRepositoryMock.Object).WithCustomEventTypeResolver(_eventTypeResolverMock.Object).AddPerformanceMonitor(performanceMonitor.Object); _subscriber = (EventStreamSubscriber)EventStreamSubscriber.Create(builder); await _subscriber.InvokeMessageHandlersForEventMessageAsync(StreamName, typeof(object), new[] { handler.Object }, new object(), EventInfo); called.Should().BeTrue(); }
public async Task InvokeMessageHandlersForEventMessageAsync_ShouldInvokeAllRegisteredPerformanceMonitorsWithAppropriateInfo() { var performanceMonitor1 = new Mock <IEventStreamSubscriberPerformanceMonitor>(); var performanceMonitor2 = new Mock <IEventStreamSubscriberPerformanceMonitor>(); var handlers = new[] { Mock.Of <IHandleEventsOf <object> >(), Mock.Of <IHandleEventsOf <object> >() }; var builder = new EventStreamSubscriberSettingsBuilder(_eventStoreHttpConnectionMock.Object, _eventHandlerResolverMock.Object, _streamPositionRepositoryMock.Object).WithCustomEventTypeResolver(_eventTypeResolverMock.Object).AddPerformanceMonitor(performanceMonitor1.Object, performanceMonitor2.Object); _subscriber = (EventStreamSubscriber)EventStreamSubscriber.Create(builder); await _subscriber.InvokeMessageHandlersForEventMessageAsync(StreamName, typeof(object), handlers, new object(), EventInfo); performanceMonitor1.Verify(x => x.Accept(StreamName, typeof(object).FullName, EventDate, 2, It.IsAny <IEnumerable <KeyValuePair <Type, Exception> > >())); performanceMonitor2.Verify(x => x.Accept(StreamName, typeof(object).FullName, EventDate, 2, It.IsAny <IEnumerable <KeyValuePair <Type, Exception> > >())); }