public async Task MoveToEndOfStreamAsync_ReadsEndOfStreamPositionFormJournal(
            [Frozen] Mock<IEventJournal> journalMock,
            EventStreamWriter writer)
        {
            await writer.MoveToEndOfStreamAsync();

            journalMock.Verify(journal => journal.ReadEndOfStreamPositionAsync(writer.StreamName));
        }
        public async Task AppendEvents_AppendEventsToJournal(
            [Frozen] EventStreamPosition position,
            [Frozen] Mock<IEventJournal> journalMock,
            EventStreamWriter writer,
            JournaledEvent[] events)
        {
            await writer.AppendEventsAsync(events);

            journalMock.Verify(journal => journal.AppendEventsAsync(
                writer.StreamName,
                position,
                It.Is<IReadOnlyCollection<JournaledEvent>>(e => e.Count == events.Length)));
        }
        public async Task StreamPosition_AfterWriteAsyncCall_UpdatedStreamVersionValue(
            [Frozen] Mock<IEventJournal> journalMock,
            EventStreamPosition position,
            EventStreamWriter writer,
            JournaledEvent[] events)
        {
            journalMock
                .Setup(self => self.AppendEventsAsync(
                    It.IsAny<string>(),
                    It.IsAny<EventStreamPosition>(),
                    It.IsAny<IReadOnlyCollection<JournaledEvent>>()))
                .Returns(position.YieldTask());

            await writer.AppendEventsAsync(events);

            Assert.Equal(position.Version, writer.StreamVersion);
        }
 public void StreamPosition_ReturnsStreamVersionValue([Frozen] EventStreamPosition position, EventStreamWriter writer)
 {
     Assert.Equal(position.Version, writer.StreamVersion);
 }