package org.tests.basic;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import org.tests.model.basic.Customer;
import org.tests.model.basic.EBasic;
import org.tests.model.basic.MyEBasicConfigStartup;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
public class TestExplicitInsert extends BaseTestCase {
@Test
public void setId_when_converted() {
EbeanServer server = Ebean.getDefaultServer();
Customer cust = new Customer();
Object returnId = server.setBeanId(cust, "42");
assertThat(returnId).isEqualTo(42);
assertThat(cust.getId()).isEqualTo(42);
}
@Test
public void setId_when_correctType() {
EbeanServer server = Ebean.getDefaultServer();
Customer customer = new Customer();
Object returnId = server.setBeanId(customer, 42);
assertThat(returnId).isEqualTo(42);
assertThat(customer.getId()).isEqualTo(42);
}
@Test
public void test() throws InterruptedException {
Thread.sleep(100);
MyEBasicConfigStartup.resetCounters();
EBasic b = new EBasic();
b.setName("exp insert");
b.setDescription("explicit insert");
b.setStatus(EBasic.Status.ACTIVE);
EbeanServer server = Ebean.getDefaultServer();
server.insert(b);
Assert.assertNotNull(b.getId());
Assert.assertEquals(b.getId(), server.getBeanId(b));
EBasic b2 = server.find(EBasic.class, b.getId());
b2.setId(null);
b2.setName("force insert");
server.insert(b2);
Assert.assertNotNull(b2.getId());
Assert.assertTrue(!b.getId().equals(b2.getId()));
List<EBasic> list = server.find(EBasic.class).where().in("id", b.getId(), b2.getId()).findList();
assertEquals(2, list.size());
b2.setName("do an update");
server.save(b2);
server.delete(b);
server.delete(b2);
// just sleep a little to allow the background thread to fire
Thread.sleep(100);
assertEquals(2, MyEBasicConfigStartup.insertCount.get());
assertEquals(1, MyEBasicConfigStartup.updateCount.get());
assertEquals(2, MyEBasicConfigStartup.deleteCount.get());
}
}