Files
ebean/ebean-querybean/src/test/java/org/querytest/QueryAlsoIfTest.java
T

105 lines
2.7 KiB
Java

package org.querytest;
import io.ebean.QueryBuilder;
import io.ebean.QueryBuilderProjection;
import io.ebean.typequery.IQueryBean;
import io.ebean.typequery.QueryBean;
import org.example.domain.Customer;
import org.example.domain.query.QCustomer;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.example.domain.query.QCustomer.Alias.name;
class QueryAlsoIfTest {
int dummy = 1;
@Test
void also() {
var q = new QCustomer()
.select(name)
.name.isNotNull()
.also(query -> query.email.isNotNull())
.query();
q.findList();
assertThat(q.getGeneratedSql()).contains("from be_customer t0 where t0.name is not null and t0.email is not null");
}
@Test
void apply() {
var q = new QCustomer()
.select(name)
.name.isNotNull()
.alsoIf(() -> dummy == 1, query -> query.status.equalTo(Customer.Status.GOOD))
.query();
q.findList();
assertThat(q.getGeneratedSql()).contains("from be_customer t0 where t0.name is not null and t0.status = ?");
}
@Test
void notApply() {
var q = new QCustomer()
.select(name)
.name.isNotNull()
.alsoIf(() -> dummy > 1, query -> query.status.equalTo(Customer.Status.GOOD))
.query();
q.findList();
assertThat(q.getGeneratedSql()).contains("from be_customer t0 where t0.name is not null");
}
@Test
void applyIfPresent() {
Object value = "yes";
var q = new QCustomer()
.select(name)
.name.isNotNull()
.alsoIfPresent(value, query -> query.status.equalTo(Customer.Status.GOOD))
.query();
q.findList();
assertThat(q.getGeneratedSql()).contains("from be_customer t0 where t0.name is not null and t0.status = ?");
}
@Test
void notApplyIfPresent() {
Object value = null;
var q = new QCustomer()
.select(name)
.name.isNotNull()
.alsoIfPresent(value, query -> query.status.equalTo(Customer.Status.GOOD))
.query();
q.findList();
assertThat(q.getGeneratedSql()).contains("from be_customer t0 where t0.name is not null");
}
@Test
void queryBuilders_expect_fluidUseOfSELF() {
var q = new QCustomer();
checkQueryBean(q);
checkIQueryBean(q);
checkQueryBuilder(q);
checkQueryBuilderProjection(q);
}
private void checkQueryBean(QueryBean<?, ?> queryBean) {
queryBean.setFirstRow(10).setMaxRows(10);
}
private void checkIQueryBean(IQueryBean<?, ?> iQueryBean) {
iQueryBean.setFirstRow(10).setMaxRows(20);
}
private void checkQueryBuilderProjection(QueryBuilderProjection<?, ?> queryBuilder) {
queryBuilder.fetch("a").fetch("b");
}
private void checkQueryBuilder(QueryBuilder<?,?> queryBuilder) {
queryBuilder.setFirstRow(10).setMaxRows(10);
}
}