예제 #1
0
        public void AggregateRoot_event_order_is_preserved()
        {
            var aggregate = new Aggregate(GetLogger());
            var events    = GenerateRandomizedEvents().ToList();

            events.ForEach(aggregate.EmitEvent);

            var pendingEvents = aggregate.GetPendingChanges();

            Assert.Equal(_numberOfRandomizedEvents, pendingEvents.Count());
            Assert.Equal(aggregate.Version, _numberOfRandomizedEvents - 1);
            aggregate.CommitChanges();
            Assert.Equal(0, aggregate.PendingChangesCount);
        }
예제 #2
0
        public void AggregateRoot_load_from_history_reestablishes_state()
        {
            var aggregate = new Aggregate(_aggregateId, GetLogger());
            var events    = GenerateRandomizedEvents().ToList();

            events.ForEach(aggregate.EmitEvent);

            var pendingChanges = aggregate.GetPendingChanges();

            var testAggregate = new Aggregate(_aggregateId, GetLogger());

            testAggregate.Load(pendingChanges);

            aggregate.CommitChanges();

            Assert.Equal(aggregate.Version, testAggregate.Version);
            Assert.Equal(aggregate.Event1Invocations, testAggregate.Event1Invocations);
            Assert.Equal(aggregate.Event2Invocations, testAggregate.Event2Invocations);
            Assert.Equal(aggregate.Event3Invocations, testAggregate.Event3Invocations);
            Assert.Equal(aggregate.Event4Invocations, testAggregate.Event4Invocations);
            Assert.Equal(0, aggregate.PendingChangesCount);
            Assert.Equal(aggregate.PendingChangesCount, testAggregate.PendingChangesCount);
        }