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

            var versions = (domainObject.CurrentVersion, domainObject.MetaVersion);

            domainObject.ApplyEvent(null);

            Assert.Equal(versions.CurrentVersion, domainObject.CurrentVersion);
            Assert.Equal(versions.MetaVersion, domainObject.MetaVersion);
        }
        public void EventReplayHandlerInvoked()
        {
            var domainObject = new DefaultDomainObject();

            Assert.RaisesAny <EventArgs>(e => domainObject.EventReplayHandled += e,
                                         e => domainObject.EventReplayHandled -= e,
                                         () => domainObject.ApplyEvent(new ReplayedEvent
            {
                Version     = 42,
                UtcTime     = DateTime.UtcNow,
                DomainEvent = new EnvironmentCreated(new EnvironmentIdentifier("Foo", "Bar"))
            }));
        }
        public void VersionsIncrementedAfterReplay()
        {
            var domainObject = new DefaultDomainObject();

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

            Assert.Equal(42, domainObject.CurrentVersion);
            Assert.Equal(42, domainObject.MetaVersion);
        }
        public void UnhandledEventGiven()
        {
            var domainObject = new DefaultDomainObject();

            var versions = (domainObject.CurrentVersion, domainObject.MetaVersion);

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

            Assert.Equal(versions.CurrentVersion, domainObject.CurrentVersion);
            Assert.Equal(42, domainObject.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 NullDomainEventReplayed()
        {
            var domainObject = new DefaultDomainObject();

            var versions = (domainObject.CurrentVersion, domainObject.MetaVersion);

            domainObject.ApplyEvent(new ReplayedEvent
            {
                Version     = 42,
                UtcTime     = DateTime.UtcNow,
                DomainEvent = null
            });

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