diff --git a/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java b/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java index 6bcf57fe4..5bb2af5b9 100755 --- a/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java +++ b/src/test/java/org/springframework/data/auditing/AuditingHandlerUnitTests.java @@ -18,12 +18,19 @@ package org.springframework.data.auditing; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.time.Instant; +import java.util.List; import java.util.Optional; import org.junit.Before; import org.junit.Test; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.domain.AuditorAware; import org.springframework.data.mapping.context.PersistentEntities; +import org.springframework.data.mapping.context.SampleMappingContext; /** * Unit test for {@code AuditingHandler}. @@ -152,4 +159,35 @@ public class AuditingHandlerUnitTests { verify(provider, times(1)).getNow(); } + + @Test + public void setsAuditingInfoOnEntityUsingInheritance() { + + AuditingHandler handler = new AuditingHandler(PersistentEntities.of(new SampleMappingContext())); + handler.setModifyOnCreation(false); + + MyDocument result = handler.markCreated(new MyDocument()); + + assertThat(result.created).isNotNull(); + assertThat(result.modified).isNull(); + + result = handler.markModified(result); + + assertThat(result.created).isNotNull(); + assertThat(result.modified).isNotNull(); + } + + static abstract class AbstractModel { + + @CreatedDate Instant created; + @CreatedBy String creator; + @LastModifiedDate Instant modified; + @LastModifiedBy String modifier; + } + + static class MyModel extends AbstractModel { + List models; + } + + static class MyDocument extends MyModel {} }