package org.tests.model.onetoone.album; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.EbeanServer; import io.ebean.Transaction; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; import java.util.ArrayList; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; public class DeleteById_SoftDelete_Tests extends BaseTestCase { @Test public void ebean_deleteById_when_softDelete() { Cover cover = new Cover("a1"); cover.save(); LoggedSqlCollector.start(); Ebean.delete(Cover.class, cover.getId()); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); if (isPlatformBooleanNative()) { assertThat(sql.get(0)).contains("update cover set deleted=true where id = ?"); } else { assertThat(sql.get(0)).contains("update cover set deleted=1 where id = ?"); } cover.deletePermanent(); } @Test public void undo_softDelete() { Cover cover = new Cover("b1"); cover.save(); Ebean.delete(Cover.class, cover.getId()); Cover findWhenSoft = Ebean.find(Cover.class, cover.getId()); assertNull(findWhenSoft); Cover cover1 = Ebean.find(Cover.class) .setIncludeSoftDeletes() .setId(cover.getId()) .findUnique(); cover1.setDeleted(false); LoggedSqlCollector.start(); cover1.update(); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); assertThat(sql.get(0)).contains("update cover set deleted=? where id=?; --bind(false"); Cover findAgain = Ebean.find(Cover.class, cover.getId()); assertNotNull(findAgain); cover.deletePermanent(); } @Test public void deleteById_when_softDelete() { Cover cover = new Cover("a1"); cover.save(); LoggedSqlCollector.start(); Ebean.getDefaultServer().delete(Cover.class, cover.getId(), null); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); if (isPlatformBooleanNative()) { assertThat(sql.get(0)).contains("update cover set deleted=true where id = ?"); } else { assertThat(sql.get(0)).contains("update cover set deleted=1 where id = ?"); } cover.deletePermanent(); } @Test public void deletePermanentById_when_softDelete() { Cover cover = new Cover("a2"); cover.save(); LoggedSqlCollector.start(); Ebean.getDefaultServer().deletePermanent(Cover.class, cover.getId(), null); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); assertThat(sql.get(0)).contains("delete from cover where id = ?"); } @Test public void deleteAllById_when_softDelete() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); server.deleteAll(Cover.class, ids(beans)); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); if (isPlatformBooleanNative()) { assertThat(sql.get(0)).contains("update cover set deleted=true where id in (?,?)"); } else { assertThat(sql.get(0)).contains("update cover set deleted=1 where id in (?,?)"); } } @Test public void deleteAllById_when_softDelete_withTransaction() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); Transaction transaction = server.beginTransaction(); try { server.deleteAll(Cover.class, ids(beans), transaction); server.commitTransaction(); } finally { server.endTransaction(); } List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); if (isPlatformBooleanNative()) { assertThat(sql.get(0)).contains("update cover set deleted=true where id in (?,?)"); } else { assertThat(sql.get(0)).contains("update cover set deleted=1 where id in (?,?)"); } } @Test public void ebean_deleteAllPermanentById_when_softDelete() { List<Cover> beans = beans(2); Ebean.saveAll(beans); LoggedSqlCollector.start(); Ebean.deleteAllPermanent(Cover.class, ids(beans)); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); assertThat(sql.get(0)).contains("delete from cover where id in (?,?)"); } @Test public void deleteAllPermanentById_when_softDelete() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); server.deleteAllPermanent(Cover.class, ids(beans)); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); assertThat(sql.get(0)).contains("delete from cover where id in (?,?)"); } @Test public void deleteAllPermanentById_when_softDelete_withTransaction() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); Transaction transaction = server.beginTransaction(); try { server.deleteAllPermanent(Cover.class, ids(beans), transaction); server.commitTransaction(); } finally { server.endTransaction(); } List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(1); assertThat(sql.get(0)).contains("delete from cover where id in (?,?)"); } @Test public void ebean_deleteAll_when_softDelete() { List<Cover> beans = beans(2); Ebean.saveAll(beans); LoggedSqlCollector.start(); Ebean.deleteAll(beans); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?"); } @Test public void deleteAll_when_softDelete() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); server.deleteAll(beans); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?"); } @Test public void deleteAll_when_softDelete_withTransaction() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); Transaction transaction = server.beginTransaction(); try { server.deleteAll(beans, transaction); server.commitTransaction(); } finally { server.endTransaction(); } List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?"); } @Test public void deleteAllPermanent_when_softDelete() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); server.deleteAllPermanent(beans); List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("delete from cover where id=?"); } @Test public void deleteAllPermanent_when_softDelete_withTransaction() { EbeanServer server = Ebean.getDefaultServer(); List<Cover> beans = beans(2); server.saveAll(beans); LoggedSqlCollector.start(); Transaction transaction = server.beginTransaction(); try { server.deleteAllPermanent(beans, transaction); server.commitTransaction(); } finally { server.endTransaction(); } List<String> sql = LoggedSqlCollector.stop(); assertThat(sql).hasSize(2); assertThat(sql.get(0)).contains("delete from cover where id=?"); } private List<Long> ids(List<Cover> beans) { List<Long> ids = new ArrayList<>(); for (Cover someBean : beans) { ids.add(someBean.getId()); } return ids; } private List<Cover> beans(int count) { List<Cover> beans = new ArrayList<>(); for (int i = 0; i < count; i++) { beans.add(new Cover("delById " + i)); } return beans; } }