Skip to content

Commit

Permalink
Improve existing test asserts around order by clause (#3467)
Browse files Browse the repository at this point in the history
  • Loading branch information
rbygrave authored Sep 1, 2024
1 parent f896470 commit 30327fe
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 5 deletions.
6 changes: 6 additions & 0 deletions ebean-test/src/test/java/org/tests/basic/TestFetchId.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.tests.basic;

import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import io.ebean.DB;
import io.ebean.FutureIds;
Expand Down Expand Up @@ -28,8 +29,13 @@ public void testFetchId() throws InterruptedException, ExecutionException {
.gt("details.id", 0)
.query();

LoggedSql.start();
List<Object> ids = query.findIds();
assertThat(ids).isNotEmpty();
List<String> sql = LoggedSql.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).doesNotContain("order by");
assertThat(sql.get(0)).doesNotContain("join o_order_detail t1");

FutureIds<Order> futureIds = query.findFutureIds();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,5 +230,6 @@ public void testJoinOnPartiallyPopulatedParent_withLazyLoadingDisabled() {
String originQuery = trimSql(loggedSql.get(0), 5);
assertThat(originQuery).contains("select t0.id, t0.status, t0.ship_date, t1.id, t1.order_qty, t1.unit_price");
assertThat(originQuery).contains(" from o_order t0 left join o_order_detail t1 ");
assertThat(originQuery).contains(" order by t0.id, t1.id asc, t1.order_qty asc, t1.cretime desc;");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void testModifyListWithCache() {
DB.save(masterDb);

masterDb = DB.find(OmCacheOrderedMaster.class, master.getId());
assertThat(masterDb.getDetails()).containsExactly(detail3, detail1);
assertThat(masterDb.getDetails()).containsExactlyInAnyOrder(detail3, detail1);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -181,5 +181,6 @@ public void testUsingForeignKeyAndFetch() {

// additional join for fetching the many details
assertThat(sql).contains(" left join o_order_detail t1 on t1.order_id = t0.id");
assertThat(sql).contains("order by t0.cretime, t0.id, t1.id asc, t1.order_qty asc, t1.cretime desc");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ public void test_with_findOne_rawSameQuery() {
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("from o_customer t0 left join o_order t1");
assertThat(sql.get(0)).contains("where t1.order_date is not null");
assertThat(sql.get(0)).contains("order by t0.id");
}

@Test
Expand Down Expand Up @@ -269,6 +270,7 @@ public void test_filterMany_in_findCount() {
List<String> sqlList = LoggedSql.stop();
assertEquals(1, sqlList.size());
assertThat(sqlList.get(0)).contains("select count(*) from o_customer");
assertThat(sqlList.get(0)).doesNotContain("order by");
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,27 @@
package org.tests.query;

import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import io.ebean.DB;
import org.junit.jupiter.api.Test;
import org.tests.model.basic.MUser;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

public class TestQueryFilterManyOnM2M extends BaseTestCase {

@Test
public void test() {
LoggedSql.start();

DB.find(MUser.class).fetch("roles").filterMany("roles").ilike("roleName", "Jim%").findList();

List<String> sql = LoggedSql.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("select t0.userid, t0.user_name, t0.user_type_id, t1.roleid, t1.role_name from muser t0 left join mrole_muser t1z_ on t1z_.muser_userid = t0.userid left join mrole t1 on t1.roleid = t1z_.mrole_roleid where lower(t1.role_name) like");
assertThat(sql.get(0)).contains("order by t0.userid;");
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.tests.query;

import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import io.ebean.DB;
import org.junit.jupiter.api.Test;
Expand All @@ -10,6 +11,8 @@
import java.sql.Date;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

public class TestQueryFilterManySimple extends BaseTestCase {

@Test
Expand All @@ -20,6 +23,7 @@ public void test() {
// not really last week :)
Date lastWeek = Date.valueOf("2010-01-01");

LoggedSql.start();
List<Customer> list = DB.find(Customer.class)
// .join("orders", new JoinConfig().lazy())
// .join("orders", new JoinConfig().query())
Expand All @@ -29,5 +33,14 @@ public void test() {

// invoke lazy loading
list.get(0).getOrders().size();
List<String> sql = LoggedSql.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("from o_customer t0 left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null left join o_customer t2 on t2.id = t1.kcustomer_id where");
assertThat(sql.get(0)).contains("order by t0.id");
if (isPostgresCompatible()) {
assertThat(sql.get(1)).contains("from contact t0 where (t0.customer_id) = any(?) and t0.first_name is not null;");
} else {
assertThat(sql.get(1)).contains("from contact t0 where (t0.customer_id) in (?) and t0.first_name is not null;");
}
}
}
12 changes: 8 additions & 4 deletions ebean-test/src/test/java/org/tests/query/TestRowCount.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.tests.query;

import io.ebean.test.LoggedSql;
import io.ebean.xtest.BaseTestCase;
import io.ebean.DB;
import io.ebean.Query;
Expand All @@ -17,9 +18,9 @@ public class TestRowCount extends BaseTestCase {

@Test
public void test() {

ResetBasicData.reset();

LoggedSql.start();
Query<Order> query = DB.find(Order.class)
.fetch("details")
.where()
Expand All @@ -28,11 +29,14 @@ public void test() {
.order("id desc").query();

int rc = query.findCount();

List<Object> ids = query.findIds();

List<Order> list = query.findList();
System.out.println(list);

List<String> sql = LoggedSql.stop();
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).doesNotContain("order by");
assertThat(sql.get(1)).contains("order by");
assertThat(sql.get(2)).contains("order by t0.id desc");
for (Order order : list) {
order.getStatus();
}
Expand Down

0 comments on commit 30327fe

Please sign in to comment.