package io.ebean;
import org.tests.model.basic.Customer;
import org.tests.model.basic.ResetBasicData;
import org.junit.Test;
import javax.persistence.PersistenceException;
import static org.assertj.core.api.Assertions.assertThat;
public class EbeanServer_eqlTest extends BaseTestCase {
@Test
public void basic() {
ResetBasicData.reset();
Query<Customer> query = server().createQuery(Customer.class, "order by id limit 10");
query.setMaxRows(100);
query.findList();
assertThat(query.getGeneratedSql()).contains("order by t0.id ");
}
@Test
public void basic_via_Ebean_defaultServer() {
ResetBasicData.reset();
Query<Customer> query = Ebean.createQuery(Customer.class, "order by id limit 10");
query.findList();
assertThat(query.getGeneratedSql()).contains("order by t0.id ");
}
@Test
public void orderBy_override() {
ResetBasicData.reset();
Query<Customer> query = server().createQuery(Customer.class, "order by id");
// use clear() and then effectively override the orderBy clause
query.orderBy().clear().asc("name");
query.findList();
assertThat(query.getGeneratedSql()).contains("order by t0.name");
}
@Test
public void namedParams() {
ResetBasicData.reset();
Query<Customer> query = server().createQuery(Customer.class, "where name startsWith :name order by name");
query.setParameter("name", "Ro");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name like ? ");
}
@Test(expected = PersistenceException.class)
public void unboundNamedParams_expect_PersistenceException() {
Query<Customer> query = server().createQuery(Customer.class, "where name = :name");
query.findUnique();
}
@Test
public void namedQuery() {
ResetBasicData.reset();
Query<Customer> name = server().createNamedQuery(Customer.class, "name");
name.findList();
assertThat(sqlOf(name, 1)).contains("select t0.id, t0.name from o_customer t0 order by t0.name");
}
@Test
public void namedQuery_withStatus() {
ResetBasicData.reset();
Query<Customer> name = server().createNamedQuery(Customer.class, "withStatus");
name.order().clear().asc("status");
name.findList();
assertThat(sqlOf(name, 2)).contains("select t0.id, t0.name, t0.status from o_customer t0 order by t0.status");
}
@Test
public void namedQuery_withContacts() {
ResetBasicData.reset();
Query<Customer> query = server()
.createNamedQuery(Customer.class, "withContacts")
.setParameter("id", 1);
query.setUseCache(false);
query.findUnique();
assertThat(query.getGeneratedSql()).contains("from o_customer t0 left join contact t1 on t1.customer_id = t0.id ");
}
@Test
public void namedQuery_fromXml() {
ResetBasicData.reset();
Query<Customer> query = server()
.createNamedQuery(Customer.class, "withContactsById")
.setParameter("id", 1);
query.setUseCache(false);
query.findUnique();
assertThat(query.getGeneratedSql()).contains("from o_customer t0 left join contact t1 on t1.customer_id = t0.id ");
}
}