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); }
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); }