예제 #1
0
        /// <summary>
        /// Performs the save or update.
        /// </summary>
        /// <param name="evt">The save or update event.</param>
        /// <returns>
        /// The id used to save the entity; may be null depending on the
        /// type of id generator used and the requiresImmediateIdAccess value
        /// </returns>
        protected override object PerformSaveOrUpdate(SaveOrUpdateEvent evt)
        {
            if (evt.Entity is IEntity)
            {
                Events.CoreEvents.Instance.OnEntitySaving((IEntity)evt.Entity, evt.Session);
            }

            if (evt.Session.IsDirtyEntity(evt.Entity))
            {
                eventListenerHelper.OnModify(evt.Entity);
            }

            return(base.PerformSaveOrUpdate(evt));
        }
        public void Should_Update_Modification_Fields_Correctly()
        {
            var principalProvider = new Mock<IPrincipalProvider>();
            principalProvider.Setup(p => p.CurrentPrincipalName).Returns("TestPrincipal");
            var helper = new EventListenerHelper(principalProvider.Object);

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

            EnsureDeletionPropertiesUntouched(entity);
            EnsureCreationPropertiesUntouched(entity);

            Assert.IsTrue(entity.ModifiedOn != DateTime.MinValue);
            Assert.AreEqual(entity.ModifiedByUser, "TestPrincipal");
        }