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