#845 - Fix EQL parsing to support the 'inverse' form - e.g. where 'Rob' eq firstName (where the path is on the RHS rather than LHS)

This commit is contained in:
Rob Bygrave
2016-10-31 21:32:29 +13:00
parent e9ad459fa5
commit cd62686337
2 changed files with 80 additions and 8 deletions
@@ -30,6 +30,47 @@ public class EqlParserTest extends BaseTestCase {
assertThat(query.getGeneratedSql()).contains("where t0.name = ?");
}
@Test
public void where_eq_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' eq name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name = ?");
}
@Test
public void where_gt_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' > name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name < ?");
}
@Test
public void where_gte_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' >= name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name <= ?");
}
@Test
public void where_lt_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' < name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name > ?");
}
@Test
public void where_lte_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' <= name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name >= ?");
}
@Test
public void where_ieq() throws Exception {
@@ -39,6 +80,14 @@ public class EqlParserTest extends BaseTestCase {
assertThat(query.getGeneratedSql()).contains("where lower(t0.name) =?");
}
@Test
public void where_ieq_reverse() throws Exception {
Query<Customer> query = parse("where 'Rob' ieq name");
query.findList();
assertThat(query.getGeneratedSql()).contains("where lower(t0.name) =?");
}
@Test
public void where_eq2() throws Exception {
@@ -58,9 +107,13 @@ public class EqlParserTest extends BaseTestCase {
assertThat(query.getGeneratedSql()).contains("where t0.name = ?");
}
@Test(expected = IllegalArgumentException.class)
@Test
public void where_namedParam_otherOrder() {
parse("where :name < plannedEnd");
Query<Customer> query = parse("where :nm < name");
query.setParameter("nm", "Rob");
query.findList();
assertThat(query.getGeneratedSql()).contains("where t0.name > ?");
}
@Test