package org.raidenjpa.query.parser; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Test; import org.raidenjpa.util.FixMe; public class JoinParseTest { @Test public void testSimpleJoin() { String jpql = "SELECT a FROM A a JOIN a.b b INNER JOIN a.b b2 WHERE b2.value = :value"; QueryParser queryParser = new QueryParser(jpql); List<JoinClause> joins = queryParser.getJoins(); assertEquals(2, joins.size()); assertEquals("a", joins.get(0).getPath().get(0)); assertEquals("b", joins.get(0).getPath().get(1)); assertEquals("b", joins.get(0).getAlias()); assertEquals("a", joins.get(1).getPath().get(0)); assertEquals("b", joins.get(1).getPath().get(1)); assertEquals("b2", joins.get(1).getAlias()); } @FixMe("Be concerned about parentheses") @Test public void testJoinWithClause() { String jpql = "SELECT a FROM A a JOIN a.b b with b.value = :value AND b.value = a.value WHERE a.id = :id"; QueryParser queryParser = new QueryParser(jpql); List<JoinClause> joins = queryParser.getJoins(); assertEquals(1, joins.size()); WithClause with = joins.get(0).getWith(); assertEquals(3, with.getLogicExpression().getElements().size()); } }