#1634 - ENH: Add convenience expressions "greater than or null" gtOrNull(), ltOrNull() and inRangeWith()

This commit is contained in:
rob bygrave
2019-02-09 00:30:55 +13:00
parent 25b6d2a5a0
commit 829dfcb013
7 changed files with 170 additions and 6 deletions
@@ -1,7 +1,7 @@
package org.tests.basic;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.DB;
import io.ebean.Query;
import org.junit.Test;
import org.tests.model.basic.Order;
@@ -9,6 +9,8 @@ import org.tests.model.basic.ResetBasicData;
import java.time.LocalDate;
import static org.assertj.core.api.Assertions.assertThat;
public class TestQueryWhereInRange extends BaseTestCase {
@Test
@@ -18,14 +20,61 @@ public class TestQueryWhereInRange extends BaseTestCase {
LocalDate today = LocalDate.now();
Query<Order> query= Ebean.find(Order.class)
Query<Order> query = DB.find(Order.class)
.where().inRange("orderDate", today.minusDays(7), today)
.isNotNull("id")
.query();
query.findList();
sqlOf(query).contains("(order_date >= ? and order_date < ?)");
assertThat(sqlOf(query)).contains("where (t0.order_date >= ? and t0.order_date < ?) and ");
}
@Test
public void gtOrNull() {
ResetBasicData.reset();
LocalDate today = LocalDate.now();
Query<Order> query = DB.find(Order.class)
.where().gtOrNull("orderDate", today)
.query();
query.findList();
assertThat(query.getGeneratedSql()).contains("where (t0.order_date > ? or t0.order_date is null)");
}
@Test
public void ltOrNull() {
ResetBasicData.reset();
LocalDate today = LocalDate.now();
Query<Order> query = DB.find(Order.class)
.where().ltOrNull("orderDate", today)
.query();
query.findList();
assertThat(query.getGeneratedSql()).contains(" where (t0.order_date < ? or t0.order_date is null)");
}
@Test
public void inRangeWith() {
ResetBasicData.reset();
LocalDate today = LocalDate.now();
Query<Order> query = DB.find(Order.class)
.where().inRangeWith("orderDate", "shipDate", today)
.query();
query.findList();
assertThat(query.getGeneratedSql()).contains("(t0.order_date <= ? and (t0.ship_date > ? or t0.ship_date is null))");
}
}