Пример #1
0
        protected async Task Given_The_Correct_Expected_Stream_Revision_When_Multiple_Events_Are_Written_In_Separate_Commits_To_The_Store_Then_The_Events_Are_Saved_Successfully(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage1 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage1);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            EventStoreMessage eventStoreMessage2 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage2);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, 1).ConfigureAwait(false);

            EventStoreMessage eventStoreMessage3 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage3);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, 2).ConfigureAwait(false);

            // Assert
            IEnumerable <EventStoreMessage> eventStoreMessages = await eventStoreProvider.ReadEventsAsync(eventStreamId).ConfigureAwait(false);

            Assert.Equal(3, eventStoreMessages.Count());
        }
Пример #2
0
        protected async Task Given_Multiple_Events_In_The_Event_Store_When_Retrieved_Using_A_Maximum_Revision_Lower_Than_Actual_Revision_Then_A_Truncated_List_Of_Events_Is_Returned(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage1 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage1);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            EventStoreMessage eventStoreMessage2 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage2);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, 1).ConfigureAwait(false);

            EventStoreMessage eventStoreMessage3 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage3);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, 2).ConfigureAwait(false);

            EventStoreMessage eventStoreMessage4 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage4);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, 3).ConfigureAwait(false);

            // Assert
            IEnumerable <EventStoreMessage> eventStoreMessages = await eventStoreProvider.ReadEventsAsync(eventStreamId, 2).ConfigureAwait(false);

            Assert.Equal(2, eventStoreMessages.Count());
        }
Пример #3
0
        protected async Task Given_A_Stream_Revision_Greater_Than_The_Current_One_When_An_Event_Is_Written_To_The_Store_Then_An_Error_Is_Raised(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage);

            // Assert
            await AssertExtensions.ThrowsAsync <EventStreamNotFoundException>(
                async() => await eventStoreProvider.CommitEventsAsync(eventStreamId, 1000).ConfigureAwait(false)).ConfigureAwait(false);
        }
Пример #4
0
        protected async Task Given_An_Appended_Event_When_CommitEvents_Is_Used_Then_The_Resulting_Event_Stream_Should_Contain_One_Event(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            // Assert
            IEnumerable <EventStoreMessage> eventStoreMessages = await eventStoreProvider.ReadEventsAsync(eventStreamId).ConfigureAwait(false);

            Assert.Single(eventStoreMessages);
        }
Пример #5
0
        protected async Task Given_Multiple_Events_In_The_Event_Store_When_Retrieved_Using_A_Maximum_Revision_Greater_Than_Actual_Revision_Then_The_Full_List_Of_Events_Is_Returned_And_No_Error_Is_Raised(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage1 = new EventStoreMessage(Guid.NewGuid(), new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage1);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            // Assert
            IEnumerable <EventStoreMessage> eventStoreMessages = await eventStoreProvider.ReadEventsAsync(eventStreamId).ConfigureAwait(false);

            Assert.Single(eventStoreMessages);
        }
Пример #6
0
        protected async Task Given_Two_Events_With_The_Same_Event_Id_When_Adding_Them_To_The_Stream_In_The_Same_Commit_Then_Only_One_Event_Is_Added(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string            eventStreamId      = Guid.NewGuid().ToEventStreamIdFormattedString();
            Guid              eventId            = Guid.NewGuid();
            EventStoreMessage eventStoreMessage1 = new EventStoreMessage(eventId, new object());
            EventStoreMessage eventStoreMessage2 = new EventStoreMessage(eventId, new object());

            // Act
            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage1);
            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage2);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            IEnumerable <EventStoreMessage> messages = await eventStoreProvider.ReadEventsAsync(eventStreamId).ConfigureAwait(false);

            // Assert
            Assert.Single(messages);
        }
Пример #7
0
        protected async Task Given_A_Stream_Of_10_Events_When_Reading_Events_From_Three_To_Nine_Then_Six_Events_Should_Be_Returned(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            for (int i = 0; i < 10; i++)
            {
                Guid eventId = Guid.NewGuid();
                EventStoreMessage eventStoreMessage = new EventStoreMessage(eventId, new object());
                eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage);
            }

            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            // Assert
            IEventStoreStream eventStoreStream = await eventStoreProvider.ReadEventsAsync(eventStreamId, 3, 9).ConfigureAwait(false);

            Assert.Equal(6, eventStoreStream.Count);
        }
Пример #8
0
        protected async Task Given_An_Appended_Event_When_CommitEvents_Is_Used_Then_The_Resulting_Event_Stream_Should_Contain_One_Event_And_The_Retrieved_Event_Has_The_Correct_Metadata(IEventStoreProvider eventStoreProvider)
        {
            // Arrange
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            Guid eventId = Guid.NewGuid();
            EventStoreMessage eventStoreMessage = new EventStoreMessage(eventId, new object());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            // Assert
            IEnumerable <EventStoreMessage> messages = await eventStoreProvider.ReadEventsAsync(eventStreamId).ConfigureAwait(false);

            EventStoreMessage[] eventStoreMessages = messages.ToArray();
            Assert.Single(eventStoreMessages);
            Assert.Equal(eventId, eventStoreMessages[0].EventId);
            Assert.Equal(2, eventStoreMessages[0].Headers.Count);
        }
Пример #9
0
        public async Task Given_A_Valid_Stream_Of_Events_When_The_Aggregate_Is_Loaded_Then_It_Does_So_Successfully()
        {
            // Arrange
            IEventStoreProvider eventStoreProvider         = GetEventStoreProvider();
            IDomainRepository   eventStoreDomainRepository = new EventStoreDomainRepository(eventStoreProvider);
            string eventStreamId = Guid.NewGuid().ToEventStreamIdFormattedString();

            // Act
            EventStoreMessage eventStoreMessage = new EventStoreMessage(Guid.NewGuid(), new TestMessageA());

            eventStoreProvider.AppendEvents(eventStreamId, eventStoreMessage);
            await eventStoreProvider.CommitEventsAsync(eventStreamId, ExpectedStreamRevision.New).ConfigureAwait(false);

            TestAggregate testAggregate = new TestAggregate(eventStreamId);
            await eventStoreDomainRepository.LoadAsync(testAggregate).ConfigureAwait(false);

            // Assert
            Assert.Equal(eventStreamId, testAggregate.EventStreamId);
            Assert.Equal(0, testAggregate.UncommittedEvents.Count);
            Assert.Equal(1, testAggregate.EventStreamRevision);
        }