コード例 #1
0
        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();
        }
コード例 #2
0
        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> > >()));
        }