From 07022c1e86ac6ea0ef4a1a54d0092407c33baff0 Mon Sep 17 00:00:00 2001 From: Michael Reiche <48999328+mikereiche@users.noreply.github.com> Date: Tue, 17 Aug 2021 10:35:33 -0700 Subject: [PATCH] Remove unnecessary auditorAwareRef from test config. (#1189) Remove unnecessary auditorAwareRef from test config as it causes confusion. The property does not need to be preset for the auditorAwareRef bean to be used. The dateTimeProviderRef must be present for the provided dateTimeProviderRef bean to be used. Closes #1052. --- ...hbaseTemplateKeyValueIntegrationTests.java | 30 ++++++++++++++----- ...mplateQueryCollectionIntegrationTests.java | 2 +- ...ouchbaseTemplateQueryIntegrationTests.java | 2 +- ...hbaseTemplateKeyValueIntegrationTests.java | 30 +++++++++++++++---- ...mplateQueryCollectionIntegrationTests.java | 2 +- .../data/couchbase/domain/Config.java | 15 +++++----- .../couchbase/domain/NaiveAuditorAware.java | 2 +- .../data/couchbase/domain/User.java | 10 ++++++- ...chbaseRepositoryQueryIntegrationTests.java | 2 +- ...aseRepositoryKeyValueIntegrationTests.java | 2 +- 10 files changed, 69 insertions(+), 28 deletions(-) diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java index f98cbf7e..8e08c089 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java @@ -38,6 +38,7 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.data.couchbase.core.ExecutableRemoveByIdOperation.ExecutableRemoveById; import org.springframework.data.couchbase.core.ExecutableReplaceByIdOperation.ExecutableReplaceById; import org.springframework.data.couchbase.core.support.OneAndAllEntity; +import org.springframework.data.couchbase.domain.NaiveAuditorAware; import org.springframework.data.couchbase.domain.PersonValue; import org.springframework.data.couchbase.domain.User; import org.springframework.data.couchbase.domain.UserAnnotated; @@ -77,16 +78,31 @@ class CouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationTests { User user = new User(UUID.randomUUID().toString(), "firstname", "lastname"); User modified = couchbaseTemplate.upsertById(User.class).one(user); assertEquals(user, modified); + // create a new object so that the object returned by replaceById() is a different object from the original user + // don't need to copy the ModifiedDate/ModifiedTime as they are not read and are overwritten. + User modifying = new User(user.getId(), user.getFirstname(), user.getLastname()); + modifying.setCreatedDate(user.getCreatedDate()); + modifying.setCreatedBy(user.getCreatedBy()); + modifying.setVersion(user.getVersion()); + modified = couchbaseTemplate.replaceById(User.class).one(modifying); + assertEquals(modifying, modified); + if(user == modified){ + throw new RuntimeException ( " user == modified "); + } + assertNotEquals(user, modified); + assertEquals(NaiveAuditorAware.AUDITOR, modified.getCreatedBy()); + assertEquals(NaiveAuditorAware.AUDITOR, modified.getLastModifiedBy()); + assertNotEquals(0, modified.getCreatedDate()); + assertNotEquals(0, modified.getLastModifiedDate()); + // The FixedDateTimeService of the AuditingDateTimeProvider will guarantee these are equal + assertEquals(user.getLastModifiedDate(), modified.getLastModifiedDate()); - modified = couchbaseTemplate.replaceById(User.class).one(user); - assertEquals(user, modified); - - user.setVersion(12345678); - assertThrows(DataIntegrityViolationException.class, () -> couchbaseTemplate.replaceById(User.class).one(user)); + User badUser = new User(user.getId(), user.getFirstname(), user.getLastname()); + badUser.setVersion(12345678); + assertThrows(DataIntegrityViolationException.class, () -> couchbaseTemplate.replaceById(User.class).one(badUser)); User found = couchbaseTemplate.findById(User.class).one(user.getId()); - user.setVersion(found.getVersion()); - assertEquals(user, found); + assertEquals(modified, found); couchbaseTemplate.removeById().one(user.getId()); } diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryCollectionIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryCollectionIntegrationTests.java index 586986af..c84e09ea 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryCollectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryCollectionIntegrationTests.java @@ -150,7 +150,7 @@ class CouchbaseTemplateQueryCollectionIntegrationTests extends CollectionAwareIn for (User u : foundUsers) { assertTrue(u.equals(user1) || u.equals(user2)); - assertEquals(auditUser, u.getCreator()); + assertEquals(auditUser, u.getCreatedBy()); assertEquals(auditMillis, u.getCreatedDate()); assertEquals(auditUser, u.getLastModifiedBy()); assertEquals(auditMillis, u.getLastModifiedDate()); diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java index 22518fdc..db0b797c 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateQueryIntegrationTests.java @@ -99,7 +99,7 @@ class CouchbaseTemplateQueryIntegrationTests extends JavaIntegrationTests { for (User u : foundUsers) { assertTrue(u.equals(user1) || u.equals(user2)); - assertEquals(auditUser, u.getCreator()); + assertEquals(auditUser, u.getCreatedBy()); assertEquals(auditMillis, u.getCreatedDate()); assertEquals(auditUser, u.getLastModifiedBy()); assertEquals(auditMillis, u.getLastModifiedDate()); diff --git a/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java index 4fc5e998..5971a078 100644 --- a/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java @@ -37,7 +37,9 @@ import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.data.couchbase.core.ExecutableRemoveByIdOperation.ExecutableRemoveById; import org.springframework.data.couchbase.core.support.OneAndAllEntityReactive; +import org.springframework.data.couchbase.domain.NaiveAuditorAware; import org.springframework.data.couchbase.domain.PersonValue; +import org.springframework.data.couchbase.domain.ReactiveNaiveAuditorAware; import org.springframework.data.couchbase.domain.User; import org.springframework.data.couchbase.domain.UserAnnotated; import org.springframework.data.couchbase.domain.UserAnnotated2; @@ -72,17 +74,33 @@ class ReactiveCouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationT User user = new User(UUID.randomUUID().toString(), "firstname", "lastname"); User modified = reactiveCouchbaseTemplate.upsertById(User.class).one(user).block(); assertEquals(user, modified); + // create a new object so that the object returned by replaceById() is a different object from the original user + // don't need to copy the ModifiedDate/ModifiedTime as they are not read and are overwritten. + User modifying = new User(user.getId(), user.getFirstname(), user.getLastname()); + modifying.setCreatedDate(user.getCreatedDate()); + modifying.setCreatedBy(user.getCreatedBy()); + modifying.setVersion(user.getVersion()); + modified = reactiveCouchbaseTemplate.replaceById(User.class).one(modifying).block(); + assertEquals(modifying, modified); + if(user == modified){ + throw new RuntimeException ( " user == modified "); + } + assertNotEquals(user, modified); + assertEquals(ReactiveNaiveAuditorAware.AUDITOR, modified.getCreatedBy()); + assertEquals(ReactiveNaiveAuditorAware.AUDITOR, modified.getLastModifiedBy()); + assertNotEquals(0, modified.getCreatedDate()); + assertNotEquals(0, modified.getLastModifiedDate()); + // The FixedDateTimeService of the AuditingDateTimeProvider will guarantee these are equal + assertEquals(user.getLastModifiedDate(), modified.getLastModifiedDate()); - modified = reactiveCouchbaseTemplate.replaceById(User.class).one(user).block(); - assertEquals(user, modified); - - user.setVersion(12345678); + User badUser = new User(user.getId(), user.getFirstname(), user.getLastname()); + badUser.setVersion(12345678); assertThrows(DataIntegrityViolationException.class, - () -> reactiveCouchbaseTemplate.replaceById(User.class).one(user).block()); + () -> reactiveCouchbaseTemplate.replaceById(User.class).one(badUser).block()); User found = reactiveCouchbaseTemplate.findById(User.class).one(user.getId()).block(); user.setVersion(found.getVersion()); - assertEquals(user, found); + assertEquals(modified, found); reactiveCouchbaseTemplate.removeById().one(user.getId()).block(); } diff --git a/src/test/java/org/springframework/data/couchbase/core/query/ReactiveCouchbaseTemplateQueryCollectionIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/query/ReactiveCouchbaseTemplateQueryCollectionIntegrationTests.java index 8c3cd943..afc7f5c1 100644 --- a/src/test/java/org/springframework/data/couchbase/core/query/ReactiveCouchbaseTemplateQueryCollectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/query/ReactiveCouchbaseTemplateQueryCollectionIntegrationTests.java @@ -148,7 +148,7 @@ class ReactiveCouchbaseTemplateQueryCollectionIntegrationTests extends Collectio for (User u : foundUsers) { assertTrue(u.equals(user1) || u.equals(user2)); - assertEquals(auditUser, u.getCreator()); + assertEquals(auditUser, u.getCreatedBy()); assertEquals(auditMillis, u.getCreatedDate()); assertEquals(auditUser, u.getLastModifiedBy()); assertEquals(auditMillis, u.getLastModifiedDate()); diff --git a/src/test/java/org/springframework/data/couchbase/domain/Config.java b/src/test/java/org/springframework/data/couchbase/domain/Config.java index 78b78077..fbdf3d57 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/Config.java +++ b/src/test/java/org/springframework/data/couchbase/domain/Config.java @@ -54,9 +54,8 @@ import com.couchbase.client.java.json.JacksonTransformers; @Configuration @EnableCouchbaseRepositories @EnableReactiveCouchbaseRepositories -@EnableCouchbaseAuditing(auditorAwareRef = "auditorAwareRef", dateTimeProviderRef = "dateTimeProviderRef") -@EnableReactiveCouchbaseAuditing(auditorAwareRef = "reactiveAuditorAwareRef", - dateTimeProviderRef = "dateTimeProviderRef") +@EnableCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef") +@EnableReactiveCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef") public class Config extends AbstractCouchbaseConfiguration { String bucketname = "travel-sample"; @@ -128,11 +127,11 @@ public class Config extends AbstractCouchbaseConfiguration { try { // comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work // ReactiveCouchbaseTemplate personTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("protected"), - // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); + // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); // baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket // ReactiveCouchbaseTemplate userTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("mybucket"), - // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); - //baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket" + // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); + // baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket" // everything else goes in getBucketName() ( which is travel-sample ) } catch (Exception e) { throw e; @@ -144,11 +143,11 @@ public class Config extends AbstractCouchbaseConfiguration { try { // comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work // CouchbaseTemplate personTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("protected"), - // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); + // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); // baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket // MappingCouchbaseConverter cvtr = (MappingCouchbaseConverter)baseMapping.getDefault().getConverter(); // CouchbaseTemplate userTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("mybucket"), - // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); + // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter())); // baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket" // everything else goes in getBucketName() ( which is travel-sample ) } catch (Exception e) { diff --git a/src/test/java/org/springframework/data/couchbase/domain/NaiveAuditorAware.java b/src/test/java/org/springframework/data/couchbase/domain/NaiveAuditorAware.java index 797a2dab..2635f16a 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/NaiveAuditorAware.java +++ b/src/test/java/org/springframework/data/couchbase/domain/NaiveAuditorAware.java @@ -32,7 +32,7 @@ import org.springframework.data.domain.AuditorAware; */ public class NaiveAuditorAware implements AuditorAware { - static public final String AUDITOR = "auditor"; + static public final String AUDITOR = "nonreactive_auditor"; private Optional auditor = Optional.of(AUDITOR); @Override diff --git a/src/test/java/org/springframework/data/couchbase/domain/User.java b/src/test/java/org/springframework/data/couchbase/domain/User.java index f29146c0..d005e7a9 100644 --- a/src/test/java/org/springframework/data/couchbase/domain/User.java +++ b/src/test/java/org/springframework/data/couchbase/domain/User.java @@ -71,10 +71,18 @@ public class User extends ComparableEntity { return createdDate; } - public String getCreator() { + public void setCreatedDate(long createdDate) { + this.createdDate = createdDate; + } + + public String getCreatedBy() { return createdBy; } + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + public long getLastModifiedDate() { return lastModifiedDate; } diff --git a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java index c5b1e757..49d12f4b 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryQueryIntegrationTests.java @@ -636,7 +636,7 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr @Configuration @EnableCouchbaseRepositories("org.springframework.data.couchbase") - @EnableCouchbaseAuditing(auditorAwareRef = "auditorAwareRef", dateTimeProviderRef = "dateTimeProviderRef") + @EnableCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef") static class Config extends AbstractCouchbaseConfiguration { @Override diff --git a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryKeyValueIntegrationTests.java index 81a6b077..6c1a8986 100644 --- a/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/repository/ReactiveCouchbaseRepositoryKeyValueIntegrationTests.java @@ -82,7 +82,7 @@ public class ReactiveCouchbaseRepositoryKeyValueIntegrationTests extends Cluster @Configuration @EnableReactiveCouchbaseRepositories("org.springframework.data.couchbase") - @EnableReactiveCouchbaseAuditing + @EnableReactiveCouchbaseAuditing(dateTimeProviderRef = "dateTimeProviderRef") static class Config extends AbstractCouchbaseConfiguration { @Override