public void GiveEventsFromASingleAggregateVersionThenAnInstanceIsCreated()
        {
            const int ExpectedCount = 2;

            var aggregate = new SerializableAggregateRoot();
            var context   = new SerializableMessage();
            var first     = new SerializableDomainEvent <SerializableAggregateRoot>(context, aggregate);
            var second    = new SerializableDomainEvent <SerializableAggregateRoot>(context, aggregate);

            var unit = new AtomicUnit(new[] { first, second });

            Assert.Equal(ExpectedCount, unit.Events.Count());
            Assert.Contains(first, unit.Events);
            Assert.Contains(second, unit.Events);
        }
        public void GivenAnInstanceThenAllPropertiesAreSerialized()
        {
            var aggregate = new SerializableAggregateRoot();
            var context   = new SerializableMessage();

            SerializableDomainEvent <SerializableAggregateRoot>[] events = new[]
            {
                new SerializableDomainEvent <SerializableAggregateRoot>(context, aggregate),
            };

            var        original     = new AtomicUnit(events);
            AtomicUnit deserialized = original.Clone();

            Assert.Equal(original.Id, deserialized.Id);
            Assert.Equal(original.Events, deserialized.Events);
            Assert.NotSame(original, deserialized);
        }