package org.sculptor.generator.util; import static org.junit.Assert.assertEquals; import org.junit.Test; public class QueryConverterTest { @Test public void testSimpleConditions() { assertEquals( ".withProperty(RootProperties.name().first()).eq(RootProperties.name().last())", new QueryConverter.ConditionalCriteriaStrategy("name.first = name.last", "Root").toQueryDsl()); assertEquals( ".withProperty(RootProperties.name().first()).eq(\"a and b\")", new QueryConverter.ConditionalCriteriaStrategy("name.first = 'a and b'", "Root").toQueryDsl()); assertEquals( ".withProperty(RootProperties.name().first()).eq(first)", new QueryConverter.ConditionalCriteriaStrategy("name.first = :first", "Root").toQueryDsl()); assertEquals( ".not().withProperty(RootProperties.name().first()).eq(first)", new QueryConverter.ConditionalCriteriaStrategy("name.first != :first", "Root").toQueryDsl()); } @Test public void testBetween() { assertEquals( ".withProperty(RootProperties.salary()).between(first,last)", new QueryConverter.ConditionalCriteriaStrategy("salary between :first and :last", "Root").toQueryDsl()); } @Test public void testIn() { assertEquals( ".withProperty(RootProperties.name().first()).in(first)", new QueryConverter.ConditionalCriteriaStrategy("name.first in (:first)", "Root").toQueryDsl()); assertEquals( ".withProperty(RootProperties.name().first()).in(\"A\",\"B\")", new QueryConverter.ConditionalCriteriaStrategy("name.first in ('A','B')", "Root").toQueryDsl()); } @Test public void testAnd() { assertEquals( ".withProperty(RootProperties.salary()).isNotNull().and().withProperty(RootProperties.salary()).lessThanOrEqual(first)", new QueryConverter.ConditionalCriteriaStrategy("salary is not null and salary <= :first", "Root").toQueryDsl()); } @Test public void testOr() { assertEquals( ".withProperty(RootProperties.salary()).isNull().or().withProperty(RootProperties.salary2()).isNull().or().withProperty(RootProperties.salary()).eq(RootProperties.salary2())", new QueryConverter.ConditionalCriteriaStrategy("salary is null or salary2 is null or salary = salary2", "Root").toQueryDsl()); } @Test public void testSelect() { assertEquals( ".select(RootProperties.name()).select(RootProperties.name().first()).select(RootProperties.salary()).alias(\"s\").max()", new QueryConverter.ConditionalCriteriaStrategy("select name, name.first,max(salary) as s", "Root").toQueryDsl()); } @Test public void testSelectWithFrom() { assertEquals( ".select(RootProperties.name()).select(RootProperties.name().first()).select(RootProperties.salary()).alias(\"s\").max()", new QueryConverter.ConditionalCriteriaStrategy("select r.name, r.name.first, max(r.salary) as s from Root r", "Root").toQueryDsl()); } @Test public void testGroupBy() { assertEquals( ".groupBy(RootProperties.name().first()).groupBy(RootProperties.test())", new QueryConverter.ConditionalCriteriaStrategy("group by name.first, test", "Root").toQueryDsl()); } @Test public void testOrderBy() { assertEquals( ".withProperty(RootProperties.test()).isNull().orderBy(RootProperties.name().first()).descending().orderBy(RootProperties.test()).ascending()", new QueryConverter.ConditionalCriteriaStrategy("order by name.first desc, test where test is null", "Root").toQueryDsl()); } }