private async Task SaveAsync(IAggregate aggregate) { var events = aggregate.GetUncomittedEvents(); foreach (var @event in events) { @event.SetAggregateId(aggregate.Id); } await domainObjectRepository.SaveAsync(aggregate, events, Guid.NewGuid()); aggregate.ClearUncommittedEvents(); }
public void Should_add_event_to_uncommitted_events_and_increase_version_when_raised() { var event1 = new MyEvent(); var event2 = new MyEvent(); var sut = new DO(Guid.NewGuid(), 10); IAggregate aggregate = sut; sut.RaiseTestEvent(event1); sut.RaiseTestEvent(event2); Assert.Equal(12, sut.Version); Assert.Equal(new IEvent[] { event1, event2 }, aggregate.GetUncomittedEvents().Select(x => x.Payload).ToArray()); aggregate.ClearUncommittedEvents(); Assert.Equal(0, sut.GetUncomittedEvents().Count); }