public async Task PublishAsync_AppendsEventsToStreamUsingStreamWriter( [Frozen] Mock <IEventStreamWriter> writerMock, JournaledEvent[] events, EventStreamProducer producer) { await producer.PublishAsync(events); writerMock.Verify(self => self.AppendEventsAsync(events)); }
public async Task PublishAsync_WhenWriterThrows_MovesItToTheEndOfStreamAndTriesAppendAgain( [Frozen] Mock <IEventStreamWriter> writerMock, [Frozen] RetryPolicyStub retryPolicy, JournaledEvent[] events, EventStreamProducer producer) { var expectedAttemptsCount = 5; retryPolicy.ConfigureMaxAttemptNumber(expectedAttemptsCount); writerMock .Setup(self => self.AppendEventsAsync(events)) .Throws <EventStreamConcurrencyException>(); await Assert.ThrowsAsync <EventStreamConcurrencyException>(() => producer.PublishAsync(events)); writerMock.Verify(self => self.MoveToEndOfStreamAsync()); writerMock.Verify(self => self.AppendEventsAsync(events), Times.Exactly(expectedAttemptsCount)); }