public void DeleteEventsDeletesTheEventsForOnlyTheSpecifiedAggregate()
{
var aggregatesWithEvents = 1.Through(10).ToDictionary(i => i,
i =>
{
var aggregateId = Guid.NewGuid();
return 1.Through(10).Select(j => new SomeEvent(aggregateId, j)).ToList();
});
using (var eventStore = CreateEventStore())
{
eventStore.SaveEvents(aggregatesWithEvents.SelectMany(x => x.Value));
var toRemove = aggregatesWithEvents[2][0].AggregateRootId;
aggregatesWithEvents.Remove(2);
eventStore.DeleteEvents(toRemove);
foreach (var kvp in aggregatesWithEvents)
{
var stream = eventStore.GetAggregateHistory(kvp.Value[0].AggregateRootId);
stream.Should().HaveCount(10);
}
eventStore.GetAggregateHistory(toRemove).Should().BeEmpty();
}
}