public async Task ShouldAddNewAggregate() { // Arrange var aggregate = new TestAggregate(); // Act await _sut.Save(aggregate); // Assert var streamId = _sut.GetStreamId(aggregate); var streams = await _streamStore.ListStreams(Pattern.StartsWith(streamId)); streams.StreamIds.Length.ShouldBe(1); var events = (await _streamStore.ReadStreamForwards(streamId, StreamVersion.Start, 1)).Messages; (await Task.WhenAll(events.Select(@event => @event.ToEvent(CancellationToken.None)))) .All(@event => @event.GetType() == typeof(TestEvent)).ShouldBeTrue(); }
public async Task ShouldAddNewEventToExistingAggregate() { // Arrange var aggregate = new TestAggregate(); await _sut.Save(aggregate); // Act aggregate = await _sut.GetById <TestAggregate>(aggregate.Id, CancellationToken.None); aggregate.SecondaryEvent(); await _sut.Save(aggregate); // Assert var streamId = _sut.GetStreamId(aggregate); var events = (await _streamStore.ReadStreamForwards(streamId, StreamVersion.Start, 100)).Messages; events.Length.ShouldBe(2); (await Task.WhenAll(events.Select(@event => @event.ToEvent(CancellationToken.None)))) .All(@event => @event.GetType() == typeof(TestEvent) || @event.GetType() == typeof(SecondaryTestEvent)).ShouldBeTrue(); }