EQL - parsing order by clause

This commit is contained in:
Robin Bygrave
2016-07-13 15:28:06 +12:00
parent 9dd82c0dd7
commit e58cec8bdd
11 changed files with 1124 additions and 610 deletions
@@ -330,6 +330,65 @@ public class EqlParserTest extends BaseTestCase {
}
}
@Test
public void orderBy() throws Exception {
ResetBasicData.reset();
Query<Customer> query = parse("order by id");
query.findList();
if (isH2()) {
assertThat(query.getGeneratedSql()).contains("from o_customer t0 order by t0.id");
}
}
@Test
public void orderBy_desc() throws Exception {
ResetBasicData.reset();
Query<Customer> query = parse("order by id desc");
query.findList();
if (isH2()) {
assertThat(query.getGeneratedSql()).contains("from o_customer t0 order by t0.id desc");
}
}
@Test
public void orderBy_nullsLast() throws Exception {
ResetBasicData.reset();
Query<Customer> query = parse("order by id desc nulls last");
query.findList();
if (isH2()) {
assertThat(query.getGeneratedSql()).contains(" from o_customer t0 order by t0.id desc nulls last");
}
}
@Test
public void orderBy_nullsFirst() throws Exception {
ResetBasicData.reset();
Query<Customer> query = parse("order by id nulls first");
query.findList();
if (isH2()) {
assertThat(query.getGeneratedSql()).contains(" from o_customer t0 order by t0.id nulls first");
}
}
@Test
public void orderBy_multiple() throws Exception {
ResetBasicData.reset();
Query<Customer> query = parse("order by billingAddress.city desc nulls last, name, id desc nulls last");
query.findList();
if (isH2()) {
assertThat(query.getGeneratedSql()).contains(" order by t1.city desc nulls last, t0.name, t0.id desc nulls last");
}
}
private Query<Customer> parse(String raw) {
@@ -54,6 +54,17 @@ public class TestOrderByParse extends BaseTestCase {
assertTrue(o1.toStringFormat().equals("id desc nulls high"));
}
@Test
public void add_parse() {
OrderBy<Object> o1 = new OrderBy<Object>();
o1.add("id desc nulls high");
assertTrue(o1.getProperties().size() == 1);
assertTrue(o1.getProperties().get(0).getProperty().equals("id"));
assertTrue(!o1.getProperties().get(0).isAscending());
assertTrue(o1.toStringFormat().equals("id desc nulls high"));
}
@Test
public void parseNullsHigh_with_second() {