From 7d77df58c5644590a1322401a39ae43883854555 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 6 Nov 2019 23:30:21 +1300 Subject: [PATCH] #1780 - Add tests for this RawSql case --- .../server/rawsql/TestRawSqlParsing.java | 70 +++++++++++++++++++ .../java/org/tests/rawsql/A2Customer.java | 30 ++++++++ src/test/java/org/tests/rawsql/ACustomer.java | 33 +++++++++ 3 files changed, 133 insertions(+) create mode 100644 src/test/java/org/tests/rawsql/A2Customer.java create mode 100644 src/test/java/org/tests/rawsql/ACustomer.java diff --git a/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlParsing.java b/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlParsing.java index 89b2f6fb0..67fe26cff 100644 --- a/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlParsing.java +++ b/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlParsing.java @@ -11,6 +11,8 @@ import io.ebeaninternal.server.rawsql.SpiRawSql.Sql; import org.junit.Test; import org.tests.model.basic.Customer; import org.tests.model.basic.ResetBasicData; +import org.tests.rawsql.A2Customer; +import org.tests.rawsql.ACustomer; import java.util.List; @@ -100,4 +102,72 @@ public class TestRawSqlParsing extends BaseTestCase { assertThat(sqlOf(query)).contains(") all_split limit 5 offset 1"); } + + @ForPlatform({Platform.H2, Platform.POSTGRES}) + @Test + public void testColumnName2() { + + ResetBasicData.reset(); + + String sql = "select 42 custId, 'bar' customerName from o_customer"; + + RawSql rawSql = RawSqlBuilder.parse(sql).create(); + + Query query = Ebean.createQuery(A2Customer.class) + .setRawSql(rawSql); + + final List list = query.findList(); + + assertThat(list).isNotEmpty(); + for (A2Customer customer : list) { + assertThat(customer.getCustId()).isEqualTo(42L); + assertThat(customer.getCustomerName()).isEqualTo("bar"); + } + } + + @ForPlatform({Platform.H2, Platform.POSTGRES}) + @Test + public void testColumnAlias() { + + ResetBasicData.reset(); + + String sql = "select 43 custId, name as custName from o_customer"; + + RawSql rawSql = RawSqlBuilder.parse(sql).create(); + + Query query = Ebean.createQuery(ACustomer.class) + .setRawSql(rawSql); + + final List list = query.findList(); + + assertThat(list).isNotEmpty(); + for (ACustomer customer : list) { + assertThat(customer.getCustId()).isEqualTo(43L); + assertThat(customer.getCustName()).isNotNull(); + } + } + + @ForPlatform({Platform.H2, Platform.POSTGRES}) + @Test + public void testColumnNameMapping() { + + ResetBasicData.reset(); + + String sql = "select v.custId, v.customerName from (select id custId, name customerName from o_customer) v"; + + RawSql rawSql = RawSqlBuilder.parse(sql) + .columnMapping("v.customerName", "custName") + .create(); + + Query query = Ebean.createQuery(ACustomer.class) + .setRawSql(rawSql); + + final List list = query.findList(); + + assertThat(list).isNotEmpty(); + for (ACustomer customer : list) { + assertThat(customer.getCustId()).isGreaterThan(0L); + assertThat(customer.getCustName()).isNotNull(); + } + } } diff --git a/src/test/java/org/tests/rawsql/A2Customer.java b/src/test/java/org/tests/rawsql/A2Customer.java new file mode 100644 index 000000000..50ca71d5d --- /dev/null +++ b/src/test/java/org/tests/rawsql/A2Customer.java @@ -0,0 +1,30 @@ +package org.tests.rawsql; + +import io.ebean.annotation.Sql; + +import javax.persistence.Entity; + +@Entity +@Sql +public class A2Customer { + + private long custId; + + private String customerName; + + public long getCustId() { + return custId; + } + + public void setCustId(long custId) { + this.custId = custId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } +} diff --git a/src/test/java/org/tests/rawsql/ACustomer.java b/src/test/java/org/tests/rawsql/ACustomer.java new file mode 100644 index 000000000..bbff6f0d3 --- /dev/null +++ b/src/test/java/org/tests/rawsql/ACustomer.java @@ -0,0 +1,33 @@ +package org.tests.rawsql; + +import io.ebean.annotation.Sql; + +import javax.persistence.Column; +import javax.persistence.Entity; + +@Entity +@Sql +public class ACustomer { + + private long custId; + + @Column(name = "customerName") + private String custName; + + + public long getCustId() { + return custId; + } + + public void setCustId(long custId) { + this.custId = custId; + } + + public String getCustName() { + return custName; + } + + public void setCustName(String custName) { + this.custName = custName; + } +}