Beispiel #1
0
    public void AggregateStream_ShouldReturnSpecifiedVersionOfTheStream()
    {
        var streamId             = Guid.NewGuid();
        var userCreated          = new UserCreated(streamId, "John Doe");
        var userNameUpdated      = new UserNameUpdated(streamId, "Adam Smith");
        var userNameUpdatedAgain = new UserNameUpdated(streamId, "Michael Newman");

        eventStore.AppendEvent <User>(streamId, userCreated);
        eventStore.AppendEvent <User>(streamId, userNameUpdated);
        eventStore.AppendEvent <User>(streamId, userNameUpdatedAgain);

        var aggregateAtVersion1 = eventStore.AggregateStream <User>(streamId, 1);

        aggregateAtVersion1.Id.Should().Be(streamId);
        aggregateAtVersion1.Name.Should().Be(userCreated.UserName);
        aggregateAtVersion1.Version.Should().Be(1);

        var aggregateAtVersion2 = eventStore.AggregateStream <User>(streamId, 2);

        aggregateAtVersion2.Id.Should().Be(streamId);
        aggregateAtVersion2.Name.Should().Be(userNameUpdated.UserName);
        aggregateAtVersion2.Version.Should().Be(2);

        var aggregateAtVersion3 = eventStore.AggregateStream <User>(streamId, 3);

        aggregateAtVersion3.Id.Should().Be(streamId);
        aggregateAtVersion3.Name.Should().Be(userNameUpdatedAgain.UserName);
        aggregateAtVersion3.Version.Should().Be(3);
    }
Beispiel #2
0
        public void AppendEventFunction_WhenStreamDoesNotExist_CreateNewStream_And_AppendNewEvent()
        {
            var streamId = Guid.NewGuid();
            var @event   = new UserCreated("John Doe");

            var result = eventStore.AppendEvent <User>(streamId, @event);

            result.Should().BeTrue();

            var wasStreamCreated = databaseConnection.QuerySingle <bool>(
                "select exists (select 1 from streams where id = @streamId)", new { streamId }
                );

            wasStreamCreated.Should().BeTrue();

            wasEventAppended(streamId);

            var stream = databaseConnection.QueryFirst <Stream>(
                "select version from streams where id = @streamId", new { streamId }
                );

            stream.Version.Should().Be(1);

            streamId = Guid.NewGuid();

            eventStore.AppendEvent <UserCreated>(streamId, @event, 0);

            stream = databaseConnection.QuerySingle <Stream>(
                "select version from streams where id = @streamId", new { streamId }
                );

            stream.Version.Should().Be(0);
        }
        public void GetStreamState_ShouldReturnProperStreamInfo()
        {
            var streamId = Guid.NewGuid();
            var @event   = new UserCreated(streamId, "John Doe");

            eventStore.AppendEvent <User>(streamId, @event);

            var streamState = eventStore.GetStreamState(streamId);

            streamState.Id.Should().Be(streamId);
            streamState.Type.Should().Be(typeof(User));
            streamState.Version.Should().Be(1);
        }
Beispiel #4
0
        public void AggregateStream_ShouldReturnObjectWithStateBasedOnEvents()
        {
            var streamId        = Guid.NewGuid();
            var userCreated     = new UserCreated(streamId, "John Doe");
            var userNameUpdated = new UserNameUpdated(streamId, "Adam Smith");

            eventStore.AppendEvent <User>(streamId, userCreated);
            eventStore.AppendEvent <User>(streamId, userNameUpdated);

            var aggregate = eventStore.AggregateStream <User>(streamId);

            aggregate.Id.Should().Be(streamId);
            aggregate.Name.Should().Be(userNameUpdated.UserName);
            aggregate.Version.Should().Be(2);
        }
        public void AppendEventFunction_WhenStreamDoesNotExist_CreateNewStream_And_AppendNewEvent()
        {
            var streamId = Guid.NewGuid();
            var @event   = new UserCreated("John Doe");

            var result = eventStore.AppendEvent <User>(streamId, @event);

            result.Should().BeTrue();

            var wasStreamCreated = databaseConnection.QuerySingle <bool>(
                "select exists (select 1 from streams where id = @streamId)", new { streamId }
                );

            wasStreamCreated.Should().BeTrue();

            var wasEventAppended = databaseConnection.QuerySingle <bool>(
                "select exists (select 1 from events where stream_id = @streamId)", new { streamId }
                );

            wasEventAppended.Should().BeTrue();

            // todo update this test to check versions are correct
        }