public void WhenNoIdAlsoPopulatesCreatedInfo()
        {
            //Arrange
            var locator = M<IServiceLocator>();
            ServiceLocator.SetLocatorProvider(() => locator);

            var clock = M<ISystemClock>();
            clock.Expect(c => c.Now()).Return(created).Repeat.Once();

            locator.Expect(l => l.GetInstance<ISystemClock>()).Return(clock).Repeat.Once();

            var entity = new DummyAuditedEntity();

            //Act
            using (var session = Store.OpenSession())
            {
                session.Store(entity);
                session.SaveChanges();
            }

            //Assert
            entity.Created.ShouldEqual(created);

            locator.VerifyAllExpectations();
            clock.VerifyAllExpectations();
        }
        public void AuditedFieldsAreUpdates()
        {
            //Arrange
            var locator = M<IServiceLocator>();
            ServiceLocator.SetLocatorProvider(() => locator);

            var clock = M<ISystemClock>();
            clock.Expect(c => c.Now()).Return(created);

            locator.Expect(l => l.GetInstance<ISystemClock>()).Return(clock);

            var entity = new DummyAuditedEntity();

            using (var session = Store.OpenSession())
            {
                session.Store(entity);
                session.SaveChanges();
            }

            clock.BackToRecord(BackToRecordOptions.All);
            clock.Replay();
            clock.Expect(c => c.Now()).Return(updated);
            user = "******";

            //Act
            using (var session = Store.OpenSession())
            {
                session.Store(entity);
                session.SaveChanges();
            }

            //Assert
            entity.Created.ShouldEqual(created);

            entity.CreatedBy.ShouldEqual("vincent");

            //Reset
            user = "******";
        }