public async Task PersistAsync_WhenCalledWithMultiEventSinksAndOneThrowsAnException_WillRaiseToAllEventSinks() { // Arrange var sink1 = new StubSink(); var sink2 = new StubSink(); var sink3 = new StubSinkThrowsException(); var logger = new StubLogger(); var sut = new EventSinkAggregator(logger); sut.EventSinks.Add(sink1); sut.EventSinks.Add(sink2); sut.EventSinks.Add(sink3); // Act await sut.PersistAsync(new StubEvent()); // Assert Assert.Equal(1, sink1.WasCalled); Assert.Equal(1, sink2.WasCalled); Assert.Equal(1, sink3.WasCalled); Assert.Equal(1, logger.TimesErrored); }
public async Task PersistAsync_WhenCalledWithMultiEventSinksAndOneThrowsAnException_WillRaiseToAllEventSinks() { // Arrange var sink1 = new StubSink(); var sink2 = new StubSink(); var sink3 = new StubSinkThrowsException(); var logger = new Mock <ILogger>(); var sut = new EventSinkAggregator(logger.Object); sut.EventSinks.Add(sink1); sut.EventSinks.Add(sink2); sut.EventSinks.Add(sink3); // Act await sut.PersistAsync(new StubEvent()); // Assert Assert.Equal(1, sink1.WasCalled); Assert.Equal(1, sink2.WasCalled); Assert.Equal(1, sink3.WasCalled); logger.Verify(x => x.Log(LogLevel.Error, 0, It.IsAny <object>(), null, It.IsAny <Func <object, Exception, string> >()), Times.Once); }