package features.domain.queries; import joist.domain.orm.queries.Select; import joist.util.Copy; import joist.util.Join; import org.junit.Assert; import org.junit.Test; import features.domain.Child; import features.domain.ChildAlias; import features.domain.ParentAlias; public class ChildQueryLimitAndOffsetTest { @Test public void testFindForParentNameSql() { // SELECT * FROM child c // INNER JOIN parent p ON c.parent_id = p.id // WHERE p.name = 'bob' // ORDER BY p.name, c.name // LIMIT 10 // OFFSET 20 ChildAlias c = new ChildAlias("c"); ParentAlias p = new ParentAlias("p"); Select<Child> q = Select.from(c); q.join(p.on(c.parent)); q.where(p.name.eq("bob")); q.orderBy(p.name.asc(), c.name.asc()); q.limit(10); q.offset(20); Assert.assertEquals(Join.lines( "SELECT DISTINCT c.id, c.name, c.version, c.parent_id", " FROM \"child\" c", " INNER JOIN \"parent\" p ON c.parent_id = p.id", " WHERE p.name = ?", " ORDER BY p.name, c.name", " LIMIT 10", " OFFSET 20"), q.toSql()); Assert.assertEquals(Copy.list("bob"), q.getWhere().getParameters()); } }