package org.tests.delete;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.Transaction;
import io.ebean.PersistBatch;
import org.tests.model.basic.Contact;
import org.tests.model.basic.EBasicVer;
import org.tests.model.converstation.Group;
import org.junit.Test;
import static org.assertj.core.api.StrictAssertions.assertThat;
public class TestDeleteWithoutOptimisticLocking extends BaseTestCase {
@Test
public void testSimpleBeanDelete_missingBean_returnsFalse() {
// delete by by without version loaded ... should not throw OptimisticLockException
Contact ref = Ebean.getReference(Contact.class, 999999);
assertThat(Ebean.delete(ref)).isFalse();
assertThat(Ebean.delete(Contact.class, 999999)).isEqualTo(0);
// same as above but using Model.delete()
Group modelRef = Ebean.getReference(Group.class, 999999);
assertThat(modelRef.delete()).isFalse();
}
@Test
public void testSimpleBeanDelete_existingBean_returnsTrue() {
EBasicVer basic = new EBasicVer("DelTest");
Ebean.save(basic);
EBasicVer basicRef = Ebean.getReference(EBasicVer.class, basic.getId());
assertThat(Ebean.delete(basicRef)).isTrue();
}
@Test
public void testSimpleBeanDelete_existingBeanWithJdbcBatch_returnsTrue() {
EBasicVer basic = new EBasicVer("DelTestBatch");
Ebean.save(basic);
EbeanServer server = Ebean.getDefaultServer();
Transaction transaction = server.beginTransaction();
try {
transaction.setBatch(PersistBatch.ALL);
// returns true even though the delete has not occurred yet
assertThat(server.delete(Ebean.getReference(EBasicVer.class, basic.getId()), transaction)).isTrue();
// returns true even though the bean does not exist
assertThat(server.delete(Ebean.getReference(EBasicVer.class, 999999), transaction)).isTrue();
transaction.commit();
assertThat(Ebean.find(EBasicVer.class, basic.getId())).isNull();
} finally {
transaction.end();
}
}
}