Merge branch 'tobias--softdeleted_where'

This commit is contained in:
rob bygrave
2020-07-10 09:57:45 +12:00
@@ -9,11 +9,13 @@ import io.ebean.SqlRow;
import io.ebean.Transaction;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.tests.model.softdelete.EBasicNoSDChild;
import org.tests.model.softdelete.EBasicSDChild;
import org.tests.model.softdelete.EBasicSoftDelete;
import java.util.List;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
@@ -136,6 +138,64 @@ public class TestSoftDeleteBasic extends BaseTestCase {
query.delete();
}
@Test
public void testNotFindSoftDeleted() {
EBasicSoftDelete bean = new EBasicSoftDelete();
bean.setName("Shouldn't be found with child expression when child is deleted");
DB.save(bean);
final EBasicSDChild child = new EBasicSDChild(bean, "Delete me, don't find me", 1L);
DB.save(child);
DB.delete(child);
Query<EBasicSoftDelete> query = DB.find(EBasicSoftDelete.class)
.where()
.eq("id", bean.getId())
.eq("children.amount", 1L)
.query();
List<EBasicSoftDelete> list = query.findList();
assertSql(query).contains("t0.deleted = false");
// Make sure that query includes that the child mustn't've been deleted
assertSql(query).contains("t1.deleted = false");
assertThat(list).hasSize(0);
// Cleanup created entity
query.delete();
DB.deleteAllPermanent(singletonList(child));
DB.deleteAllPermanent(singletonList(bean));
}
@Test
public void testNotFindSoftDeletedMultilevel() {
EBasicSoftDelete bean = new EBasicSoftDelete();
bean.setName("Shouldn't be found with child expression when child is deleted");
DB.save(bean);
final EBasicSDChild child = new EBasicSDChild(bean, "Delete me, don't find me", 1L);
DB.save(child);
DB.delete(child);
EBasicNoSDChild secondChild = new EBasicNoSDChild(bean, "Never deleted", 2L);
DB.save(secondChild);
Query<EBasicNoSDChild> query = DB.find(EBasicNoSDChild.class)
.where()
.eq("id", bean.getId())
.eq("owner.children.amount", 1L)
.query();
List<EBasicNoSDChild> list = query.findList();
// Make sure that query includes that the child mustn't've been deleted
assertSql(query).contains("t1.deleted = false");
assertSql(query).contains("t2.deleted = false");
assertThat(list).hasSize(0);
// Cleanup created entity
query.delete();
DB.deleteAllPermanent(singletonList(child));
DB.deleteAllPermanent(singletonList(bean));
}
@Test
public void testDeleteById_and_findCount() {