NEW: Ebean.checkUniqueness - you can check a bean, if save would work (#1303)

This commit is contained in:
Roland Praml
2018-03-02 11:57:44 +13:00
committed by Rob Bygrave
parent 0c368ed7b3
commit efe325034b
7 changed files with 256 additions and 1 deletions
@@ -0,0 +1,73 @@
package org.tests.insert;
import io.ebean.BaseTestCase;
import org.junit.Before;
import org.junit.Test;
import org.tests.model.draftable.Document;
import static org.assertj.core.api.Assertions.assertThat;
public class TestInsertCheckUnique extends BaseTestCase {
@Before
public void clearDb() {
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();
try {
Document doc1 = new Document();
doc1.setTitle("ThisIsAUniqueKey");
doc1.setBody("one");
assertThat(server().checkUniqueness(doc1)).isEmpty();
doc1.save();
Document doc2 = new Document();
doc2.setTitle("ThisIsAUniqueKey");
doc2.setBody("clashes with doc1");
assertThat(server().checkUniqueness(doc2)).isEmpty();
;
server().publish(doc1.getClass(), doc1.getId());
assertThat(server().checkUniqueness(doc2).toString()).contains("title");
} finally {
server().endTransaction();
}
}
@Test
public void insert_duplicateNull() {
server().beginTransaction();
try {
Document doc1 = new Document();
doc1.setTitle(null);
doc1.setBody("one");
assertThat(server().checkUniqueness(doc1)).isEmpty();
doc1.save();
Document doc2 = new Document();
doc2.setTitle(null);
doc2.setBody("clashes with doc1");
assertThat(server().checkUniqueness(doc2)).isEmpty();
server().publish(doc1.getClass(), doc1.getId());
assertThat(server().checkUniqueness(doc2)).isEmpty();
doc2.save();
server().publish(doc2.getClass(), doc2.getId());
} finally {
server().endTransaction();
}
}
}