#1303 - NEW: Ebean.checkUniqueness ... add example to javadoc

This commit is contained in:
Rob Bygrave
2018-03-02 16:25:13 +13:00
parent 98e014f8c8
commit ebaeafc11b
3 changed files with 131 additions and 16 deletions
@@ -1,11 +1,13 @@
package org.tests.insert;
import io.ebean.BaseTestCase;
import io.ebean.plugin.Property;
import org.junit.Before;
import org.junit.Test;
import org.tests.model.draftable.Document;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
public class TestInsertCheckUnique extends BaseTestCase {
@@ -15,7 +17,7 @@ public class TestInsertCheckUnique extends BaseTestCase {
server().find(Document.class).asDraft().where().contains("title", "UniqueKey").delete();
server().find(Document.class).asDraft().where().isNull("title").delete();
}
@Test
public void insert_duplicateKey() {
server().beginTransaction();
@@ -32,7 +34,6 @@ public class TestInsertCheckUnique extends BaseTestCase {
doc2.setBody("clashes with doc1");
assertThat(server().checkUniqueness(doc2)).isEmpty();
;
server().publish(doc1.getClass(), doc1.getId());
@@ -41,7 +42,7 @@ public class TestInsertCheckUnique extends BaseTestCase {
server().endTransaction();
}
}
@Test
public void insert_duplicateNull() {
server().beginTransaction();
@@ -58,7 +59,7 @@ public class TestInsertCheckUnique extends BaseTestCase {
doc2.setBody("clashes with doc1");
assertThat(server().checkUniqueness(doc2)).isEmpty();
server().publish(doc1.getClass(), doc1.getId());
assertThat(server().checkUniqueness(doc2)).isEmpty();
@@ -70,4 +71,48 @@ public class TestInsertCheckUnique extends BaseTestCase {
}
}
@Test
public void example() {
server().beginTransaction();
try {
Document doc1 = new Document();
doc1.setTitle("One flew over the cuckoo's nest");
doc1.setBody("one");
doc1.save();
server().publish(doc1.getClass(), doc1.getId());
Document doc2 = new Document();
doc2.setTitle("One flew over the cuckoo's nest");
doc2.setBody("clashes with doc1");
Set<Property> properties = server().checkUniqueness(doc2);
if (properties.isEmpty()) {
// it is unique ... carry on
} else {
// build a user friendly message
// to return message back to user
String uniqueProperties = properties.toString();
StringBuilder msg = new StringBuilder();
properties.forEach((it)-> {
Object propertyValue = it.getVal(doc2);
String propertyName = it.getName();
msg.append(" property["+propertyName+"] value["+propertyValue+"]");
});
System.out.println("uniqueProperties > "+uniqueProperties);
System.out.println(" custom msg > " + msg.toString());
}
assertThat(server().checkUniqueness(doc2).toString()).contains("title");
} finally {
server().endTransaction();
}
}
}