diff --git a/spring-data-mock-build/pom.xml b/spring-data-mock-build/pom.xml index 17d25815..f1fce08a 100644 --- a/spring-data-mock-build/pom.xml +++ b/spring-data-mock-build/pom.xml @@ -26,7 +26,7 @@ com.mmnaseri.utils spring-data-mock-build - 2.0.0 + 2.1.0 pom Spring Data Mock: Build Aggregator diff --git a/spring-data-mock-sample-jpa/pom.xml b/spring-data-mock-sample-jpa/pom.xml index 31b44f76..d3a8d67b 100644 --- a/spring-data-mock-sample-jpa/pom.xml +++ b/spring-data-mock-sample-jpa/pom.xml @@ -36,7 +36,7 @@ 2.2.6.RELEASE 2.2.6.RELEASE 1.0.2 - 2.0.0 + 2.1.0 7.1.0 1.3 3.8.1 diff --git a/spring-data-mock-sample-mongo/pom.xml b/spring-data-mock-sample-mongo/pom.xml index 651f66a9..2709eef9 100644 --- a/spring-data-mock-sample-mongo/pom.xml +++ b/spring-data-mock-sample-mongo/pom.xml @@ -37,7 +37,7 @@ UTF-8 2.2.6.RELEASE 2.2.6.RELEASE - 2.0.0 + 2.1.0 7.1.0 1.3 3.8.1 diff --git a/spring-data-mock/pom.xml b/spring-data-mock/pom.xml index 0960cc47..d064675a 100644 --- a/spring-data-mock/pom.xml +++ b/spring-data-mock/pom.xml @@ -27,7 +27,7 @@ com.mmnaseri.utils spring-data-mock - 2.0.0 + 2.1.0 Spring Data Mock A framework for mocking Spring Data repositories diff --git a/spring-data-mock/src/main/java/com/mmnaseri/utils/spring/data/proxy/impl/DefaultTypeMappingContext.java b/spring-data-mock/src/main/java/com/mmnaseri/utils/spring/data/proxy/impl/DefaultTypeMappingContext.java index 459b1008..af8a7d51 100644 --- a/spring-data-mock/src/main/java/com/mmnaseri/utils/spring/data/proxy/impl/DefaultTypeMappingContext.java +++ b/spring-data-mock/src/main/java/com/mmnaseri/utils/spring/data/proxy/impl/DefaultTypeMappingContext.java @@ -113,11 +113,6 @@ public List> getMappings(Class repositoryType) { final Object instance; try { instance = implementation.getDeclaredConstructor().newInstance(); - } catch (InstantiationException e) { - log.error("Failed to instantiate class " + implementation - + " because there was an error in the constructor"); - throw new RepositoryDefinitionException(repositoryType, - "Failed to instantiate an object of type " + implementation, e); } catch (IllegalAccessException e) { log.error("The constructor for the implementation class is not accessible: " + implementation); throw new RepositoryDefinitionException(repositoryType, diff --git a/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/domain/impl/key/BsonObjectIdKeyGeneratorTest.java b/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/domain/impl/key/BsonObjectIdKeyGeneratorTest.java new file mode 100644 index 00000000..d6714e52 --- /dev/null +++ b/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/domain/impl/key/BsonObjectIdKeyGeneratorTest.java @@ -0,0 +1,35 @@ +package com.mmnaseri.utils.spring.data.domain.impl.key; + +import org.bson.types.ObjectId; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.HashSet; +import java.util.Set; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; + +public class BsonObjectIdKeyGeneratorTest { + + private BsonObjectIdKeyGenerator generator; + + @BeforeMethod + public void setUp() { + generator = new BsonObjectIdKeyGenerator(); + } + + @Test + public void testNotNullValue() { + assertThat(generator.generate(), is(notNullValue())); + } + + @Test + public void testUniqueness() { + final Set set = new HashSet<>(); + for (int i = 0; i < 1000; i++) { + final ObjectId id = generator.generate(); + assertThat(set, not(contains(id))); + } + } +} \ No newline at end of file diff --git a/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/repository/CrudRepositorySupportTest.java b/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/repository/CrudRepositorySupportTest.java index 065549c4..64883aa5 100644 --- a/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/repository/CrudRepositorySupportTest.java +++ b/spring-data-mock/src/test/java/com/mmnaseri/utils/spring/data/repository/CrudRepositorySupportTest.java @@ -13,6 +13,7 @@ import org.hamcrest.Matchers; import org.testng.annotations.Test; +import java.util.Arrays; import java.util.concurrent.atomic.AtomicLong; import static org.hamcrest.MatcherAssert.assertThat; @@ -58,10 +59,6 @@ public void testPerformingUpdates() { assertThat(dataStore.getRequests().get(0).getKey(), Matchers.is(entity.getId())); } - /** - * This needs to have the root cause logged. See #29 - * - */ @Test(expectedExceptions = DataStoreException.class) public void testPerformingInsertsWhenNoKeyGeneratorIsPresent() { final CrudRepositorySupport support = new CrudRepositorySupport(); @@ -90,4 +87,28 @@ public void testPerformingInsertsWhenAKeyGeneratorIsPresent() { assertThat(dataStore.getRequests().get(0).getKey(), is(notNullValue())); } + @Test + public void testInsertingMultipleEntities() { + final CrudRepositorySupport support = new CrudRepositorySupport(); + final MemoryDataStore actualDataStore = new MemoryDataStore<>(Person.class); + final SpyingDataStore dataStore = new SpyingDataStore<>(actualDataStore, new AtomicLong()); + support.setDataStore(dataStore); + support.setRepositoryMetadata( + new ImmutableRepositoryMetadata(String.class, Person.class, SimplePersonRepository.class, "id")); + support.setKeyGenerator(new UUIDKeyGenerator()); + + final Person first = new Person(); + final Person second = new Person(); + final Person third = new Person(); + + support.insert(Arrays.asList(first, second, third)); + + assertThat(dataStore.getRequests(), hasSize(3)); + assertThat(dataStore.getRequests().get(0).getOperation(), is(Operation.SAVE)); + assertThat(dataStore.getRequests().get(0).getEntity(), is(first)); + assertThat(dataStore.getRequests().get(1).getOperation(), is(Operation.SAVE)); + assertThat(dataStore.getRequests().get(1).getEntity(), is(second)); + assertThat(dataStore.getRequests().get(2).getOperation(), is(Operation.SAVE)); + assertThat(dataStore.getRequests().get(2).getEntity(), is(third)); + } } \ No newline at end of file