package org.tests.model.onetoone.album;
import io.ebean.BaseTestCase;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestOneToOneHardDelete extends BaseTestCase {
@Test
public void test() {
Cover cover = new Cover();
cover.setS3Url("http://foo");
cover.save();
Album album = new Album();
album.setName("BlackWhite");
album.setCover(cover);
album.save();
Album found1 = Album.find.byId(album.getId());
LoggedSqlCollector.start();
// ---------------------
// SOFT DELETE
// ---------------------
found1.delete();
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(3);
// assert we loaded the missing/unloaded foreign key
assertThat(trimSql(sql.get(0), 1)).contains("select t0.id, t0.cover_id from album t0 where t0.id = ?");
// assert soft delete cascaded
assertThat(sql.get(1)).contains("update album set deleted=?, last_update=? where id=?");
assertThat(sql.get(2)).contains("update cover set deleted=? where id=?");
Album found2 = Album.find.query().setId(album.getId()).setIncludeSoftDeletes().findUnique();
LoggedSqlCollector.start();
// ---------------------
// HARD DELETE
// ---------------------
found2.deletePermanent();
sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(3);
// assert we loaded the missing/unloaded foreign key
assertThat(trimSql(sql.get(0), 1)).contains("select t0.id, t0.cover_id from album t0 where t0.id = ?");
// assert hard delete cascaded
assertThat(sql.get(1)).contains("delete from album where");
assertThat(sql.get(2)).contains("delete from cover where");
}
}