public void Should_tag_updated_info_when_created_info_exists()
        {
            var userSession = S <IUserSession>();
            var createdUser = new User {
                Username = "******"
            };
            var currentUser = new User {
                Username = "******"
            };

            userSession.Stub(us => us.GetCurrentUser()).Return(currentUser);

            var conference = new Conference
            {
                ChangeAuditInfo =
                    new ChangeAuditInfo {
                    Created = new DateTime(2008, 10, 1), CreatedBy = createdUser.Username
                }
            };

            var interceptor = new ChangeAuditInfoInterceptor(userSession, new Clock(new DateTime(2008, 10, 20)));

            interceptor.OnFlushDirty(conference, null, new[] { conference.ChangeAuditInfo }, null, new[] { "ChangeAuditInfo" }, null);

            conference.ChangeAuditInfo.Created.ShouldEqual(new DateTime(2008, 10, 1));
            conference.ChangeAuditInfo.CreatedBy.ShouldEqual(createdUser.Username);
            conference.ChangeAuditInfo.Updated.ShouldEqual(new DateTime(2008, 10, 20));
            conference.ChangeAuditInfo.UpdatedBy.ShouldEqual(currentUser.Username);
        }
        public void Should_ignore_non_auditable_entities()
        {
            var userSession = S <IUserSession>();
            var currentUser = new User();

            userSession.Stub(us => us.GetCurrentUser()).Return(currentUser);

            var testEntity = S <PersistentObject>();

            var interceptor = new ChangeAuditInfoInterceptor(userSession, null);

            interceptor.OnSave(testEntity, null, new[] { new ChangeAuditInfo() }, new[] { "ChangeAuditInfo" }, null);
            interceptor.OnFlushDirty(testEntity, null, new[] { new ChangeAuditInfo() }, null, new[] { "ChangeAuditInfo" }, null);
        }
        public void Should_tag_created_and_updated_info_when_no_created_date_exists()
        {
            var userSession = S <IUserSession>();
            var currentUser = new User {
                Username = "******"
            };

            userSession.Stub(us => us.GetCurrentUser()).Return(currentUser);

            var conference = new Conference();

            var interceptor = new ChangeAuditInfoInterceptor(userSession, new Clock(new DateTime(2008, 10, 20)));

            interceptor.OnSave(conference, null, new[] { new ChangeAuditInfo() }, new[] { "ChangeAuditInfo" }, null);

            conference.ChangeAuditInfo.Created.ShouldEqual(new DateTime(2008, 10, 20));
            conference.ChangeAuditInfo.CreatedBy.ShouldEqual(currentUser.Username);
            conference.ChangeAuditInfo.Updated.ShouldEqual(new DateTime(2008, 10, 20));
            conference.ChangeAuditInfo.UpdatedBy.ShouldEqual(currentUser.Username);
        }