public void Should_Update_Deletion_Fields_Correctly()
        {
            var principalProvider = new Mock<IPrincipalProvider>();
            principalProvider.Setup(p => p.CurrentPrincipalName).Returns("TestPrincipal");
            var helper = new EventListenerHelper(principalProvider.Object);

            var entity = CreateEntity();
            helper.OnDelete(entity);

            EnsureCreationPropertiesUntouched(entity);
            EnsureModificationPropertiesUntouched(entity);

            Assert.IsTrue(entity.IsDeleted);
            Assert.IsTrue(entity.DeletedOn != DateTime.MinValue);
            Assert.AreEqual(entity.DeletedByUser, "TestPrincipal");
        }
Esempio n. 2
0
        /// <summary>
        /// Perform the entity deletion.  Well, as with most operations, does not
        /// really perform it; just schedules an action/execution with the
        /// <see cref="T:NHibernate.Engine.ActionQueue" /> for execution during flush.
        /// </summary>
        /// <param name="session">The originating session</param>
        /// <param name="entity">The entity to delete</param>
        /// <param name="entityEntry">The entity's entry in the <see cref="T:NHibernate.ISession" /></param>
        /// <param name="isCascadeDeleteEnabled">Is delete cascading enabled?</param>
        /// <param name="persister">The entity persister.</param>
        /// <param name="transientEntities">A cache of already deleted entities.</param>
        protected override void DeleteEntity(IEventSource session, object entity, EntityEntry entityEntry,
                                             bool isCascadeDeleteEnabled, IEntityPersister persister, ISet <object> transientEntities)
        {
            if (entity is IEntity)
            {
                Events.CoreEvents.Instance.OnEntityDelete((IEntity)entity);
            }

            if (entity is Entity && !(entity is IDeleteableEntity))
            {
                eventListenerHelper.OnDelete(entity);

                CascadeBeforeDelete(session, persister, entity, entityEntry, transientEntities);
                CascadeAfterDelete(session, persister, entity, transientEntities);
            }
            else
            {
                base.DeleteEntity(session, entity, entityEntry, isCascadeDeleteEnabled, persister, transientEntities);
            }
        }