public async Task ExistingEventsAreLoadedAndProcessedOnStart() { var existingEvent = new TestAggregateCreatedEvent(new Guid("b166fbb3-b7f9-49d2-8a61-0b4df5fff561"), "Test1"); A.CallTo(() => _persistenceClient.Retrieve(typeof(TestAggregateCreatedEvent))) .Returns(new IEvent[] { existingEvent }); var reader = new TestAggregateReader(_persistenceClient, _streamingClient); await reader.StartAsync(); var aggregates = reader.Get(); Assert.AreEqual(1, aggregates.Length); var actualAggregate = aggregates[0]; Assert.AreEqual(existingEvent.AggregateId, actualAggregate.Id); Assert.AreEqual(existingEvent.Foo, actualAggregate.Foo); }
public async Task WhenSavingNewEventUsesVersionOfAggregateAsExpectedVersion() { var createdEvent = new TestAggregateCreatedEvent(new Guid("b166fbb3-b7f9-49d2-8a61-0b4df5fff561"), "Test1_Initial"); var updatedEvent = new TestAggregateUpdatedEvent(new Guid("b166fbb3-b7f9-49d2-8a61-0b4df5fff561"), "Test1_Updated"); A.CallTo(() => _persistenceClient.Retrieve(typeof(TestAggregateCreatedEvent))) .Returns(new IEvent[] { createdEvent }); A.CallTo(() => _persistenceClient.Retrieve(typeof(TestAggregateUpdatedEvent))) .Returns(new IEvent[] { updatedEvent }); var writer = new TestAggregateWriter(_persistenceClient, _streamingClient); await writer.StartAsync(); var newUpdatedEvent = new TestAggregateUpdatedEvent(new Guid("b166fbb3-b7f9-49d2-8a61-0b4df5fff561"), "Test1_Updated_SecondTime"); await writer.Save(newUpdatedEvent); A.CallTo(() => _persistenceClient.Save( "TestAggregateRoot_b166fbb3-b7f9-49d2-8a61-0b4df5fff561", 1, A <IEvent> .Ignored)) .MustHaveHappenedOnceExactly(); }
private async Task <List <IEvent> > RetrievePersistedEvents() { var retrievedEvents = await Task.WhenAll( SubscribedEventTypes .Select(async nameToTypeMapping => { var type = nameToTypeMapping.Value; return(await _eventPersistenceClient.Retrieve(type)); })); return(retrievedEvents .SelectMany(y => y) .ToList()); }