public void GivenAnAggregateThatHasChangesThenAnAggregateHasUncommittedChangesExceptionIsThrown()
        {
            var aggregate = new SerializableEventCentricAggregateRoot();
            var context   = new SerializableMessage();

            IEnumerable <DomainEvent> events = aggregate.ApplyChanges(context, commit: false, times: 1);

            AggregateHasUncommittedChangesException exception = Assert.Throws <AggregateHasUncommittedChangesException>(
                () => aggregate.LoadFromHistory(events));

            Assert.True(exception.Aggregate.IsMatch(aggregate));
        }
        public void GivenAnInstanceThenAllPropertiesAreSerialized()
        {
            var aggregate = new SerializableEventCentricAggregateRoot();
            var context   = new SerializableMessage();

            IEnumerable <DomainEvent> events = aggregate.ApplyChanges(context, commit: false, times: 1);

            AggregateHasUncommittedChangesException original = Assert.Throws <AggregateHasUncommittedChangesException>(
                () => aggregate.LoadFromHistory(events));

            AggregateHasUncommittedChangesException deserialized = original.Clone();

            Assert.NotSame(original, deserialized);
            Assert.Equal(original.Aggregate, deserialized.Aggregate);
        }