mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
174 lines
3.6 KiB
Java
174 lines
3.6 KiB
Java
package org.tests.query;
|
|
|
|
import io.ebean.BaseTestCase;
|
|
import io.ebean.Ebean;
|
|
import io.ebean.PagedList;
|
|
import org.tests.model.basic.Order;
|
|
import org.tests.model.basic.ResetBasicData;
|
|
import org.ebeantest.LoggedSqlCollector;
|
|
import org.junit.Test;
|
|
|
|
import java.util.List;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
/**
|
|
* Ebean adds order by clause if none provided when using both first rows and max rows.
|
|
*/
|
|
public class TestAddOrderByWithFirstRowsMaxRows extends BaseTestCase {
|
|
|
|
@Test
|
|
public void test_firstRows() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.setFirstRow(3)
|
|
.orderBy().asc("id")
|
|
.findList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.id");
|
|
}
|
|
|
|
|
|
@Test
|
|
public void test_maxRows() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.setMaxRows(10)
|
|
.findList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.id");
|
|
}
|
|
|
|
|
|
@Test
|
|
public void test_firstRowsMaxRows() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.setFirstRow(3)
|
|
.setMaxRows(10)
|
|
.orderBy().asc("id")
|
|
.findList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.id");
|
|
}
|
|
|
|
@Test
|
|
public void test_maxRows1() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
// maxRows 1 with no first rows means Ebean does not automatically
|
|
// add the order by id to the query
|
|
Ebean.find(Order.class)
|
|
.setMaxRows(1)
|
|
.findList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).doesNotContain("order by t0.id");
|
|
}
|
|
|
|
@Test
|
|
public void test_pagingOne() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
PagedList<Order> pagedList =
|
|
Ebean.find(Order.class)
|
|
.setMaxRows(10)
|
|
.findPagedList();
|
|
|
|
pagedList.getList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.id");
|
|
}
|
|
|
|
@Test
|
|
public void test_pagingTwo() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.setFirstRow(10)
|
|
.setMaxRows(10)
|
|
.findPagedList()
|
|
.getList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.id");
|
|
}
|
|
|
|
|
|
@Test
|
|
public void test_pagingAppendToExistingOrderBy() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.order().asc("orderDate")
|
|
.setMaxRows(10)
|
|
.findPagedList()
|
|
.getList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.order_date, t0.id");
|
|
}
|
|
|
|
@Test
|
|
public void test_pagingExistingOrderByWithId() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
LoggedSqlCollector.start();
|
|
|
|
Ebean.find(Order.class)
|
|
.order().asc("orderDate")
|
|
.order().desc("id")
|
|
.setMaxRows(10)
|
|
.findPagedList()
|
|
.getList();
|
|
|
|
List<String> loggedSql = LoggedSqlCollector.stop();
|
|
|
|
assertThat(loggedSql).hasSize(1);
|
|
assertThat(loggedSql.get(0)).contains("order by t0.order_date, t0.id desc");
|
|
}
|
|
}
|