diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
index 0d67b908a..2f3e1e203 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/AbstractPersonRepositoryIntegrationTests.java
@@ -12,6 +12,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.document.mongodb.geo.Box;
import org.springframework.data.document.mongodb.geo.Circle;
import org.springframework.data.document.mongodb.geo.Point;
@@ -267,4 +268,15 @@ public abstract class AbstractPersonRepositoryIntegrationTests {
public void existsWorksCorrectly() {
assertThat(repository.exists(dave.getId()), is(true));
}
+
+ @Test(expected = DuplicateKeyException.class)
+ public void rejectsDuplicateEmailAddressOnSave() {
+
+ assertThat(dave.getEmail(), is("dave@dmband.com"));
+
+ Person daveSyer = new Person("Dave", "Syer");
+ assertThat(daveSyer.getEmail(), is("dave@dmband.com"));
+
+ repository.save(daveSyer);
+ }
}
\ No newline at end of file
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java
index e3c117886..ddc898955 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/repository/Person.java
@@ -19,6 +19,7 @@ import java.util.Set;
import org.springframework.data.document.mongodb.geo.Point;
import org.springframework.data.document.mongodb.index.GeoSpatialIndexed;
+import org.springframework.data.document.mongodb.index.Indexed;
import org.springframework.data.document.mongodb.mapping.Document;
/**
@@ -35,6 +36,8 @@ public class Person extends Contact {
private String firstname;
private String lastname;
+ @Indexed(unique = true, dropDups = true)
+ private String email;
private Integer age;
private Sex sex;
@@ -66,6 +69,7 @@ public class Person extends Contact {
this.lastname = lastname;
this.age = age;
this.sex = sex;
+ this.email = (firstname == null ? "noone" : firstname.toLowerCase()) + "@dmband.com";
}
/**
@@ -102,6 +106,20 @@ public class Person extends Contact {
this.lastname = lastname;
}
+ /**
+ * @return the email
+ */
+ public String getEmail() {
+ return email;
+ }
+
+ /**
+ * @param email the email to set
+ */
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
/**
* @return the age
*/
diff --git a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml
index db97f8669..86c5e03c3 100644
--- a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml
+++ b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/PersonRepositoryIntegrationTests-context.xml
@@ -7,12 +7,13 @@
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
-
-
-
+
+
-
-
+
+
+
+
diff --git a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests-context.xml b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests-context.xml
index 5fdb420ec..284818bbc 100644
--- a/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests-context.xml
+++ b/spring-data-mongodb/src/test/resources/org/springframework/data/document/mongodb/repository/config/MongoNamespaceIntegrationTests-context.xml
@@ -1,19 +1,21 @@
+ xmlns:mongo="http://www.springframework.org/schema/data/mongo"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:repository="http://www.springframework.org/schema/data/repository"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
+ http://www.springframework.org/schema/data/repository http://www.springframework.org/schema/data/repository/spring-repository-1.0.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
-
-
-
+
+
+