public void SnapshotContainsVersion()
        {
            var domainObject = new DefaultDomainObject();

            domainObject.SetVersion(42, 4711);

            var snapshot = domainObject.CreateSnapshot();

            Assert.Equal(42, snapshot.Version);
            Assert.Equal(4711, snapshot.MetaVersion);
        }
        public void OldEventGiven()
        {
            var domainObject = new DefaultDomainObject();

            domainObject.SetVersion(100, 101);

            domainObject.ApplyEvent(new ReplayedEvent
            {
                Version     = 42,
                UtcTime     = DateTime.UtcNow,
                DomainEvent = new DefaultEnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar"))
            });

            Assert.Equal(100, domainObject.CurrentVersion);
            Assert.Equal(101, domainObject.MetaVersion);
        }
        public void SnapshotAppliedInternally()
        {
            var domainObject = new DefaultDomainObject {
                FooBarSubProperty1 = 4242
            };

            domainObject.SetVersion(42, 42);

            var snapshot = domainObject.CreateSnapshot();

            Assert.RaisesAny <EventArgs>(e => domainObject.SnapshotAppliedInternally += e,
                                         e => domainObject.SnapshotAppliedInternally -= e,
                                         () => { domainObject.ApplySnapshot(snapshot); });

            Assert.Equal(42, domainObject.MetaVersion);
            Assert.Equal(42, domainObject.CurrentVersion);
        }