Example #1
0
        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);
        }