package com.querydsl.sql; import static com.querydsl.sql.Constants.employee; import static com.querydsl.sql.RelationalPathExtractor.extract; import static org.junit.Assert.assertEquals; import org.junit.Test; import com.google.common.collect.ImmutableSet; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.sql.domain.QEmployee; public class RelationalPathExtractorTest { private SQLQuery<?> query() { return new SQLQuery<Void>(); } @Test public void simpleQuery() { QEmployee employee2 = new QEmployee("employee2"); SQLQuery<?> query = query().from(employee, employee2); assertEquals(ImmutableSet.of(employee, employee2), extract(query.getMetadata())); } @Test public void joins() { QEmployee employee2 = new QEmployee("employee2"); SQLQuery<?> query = query().from(employee) .innerJoin(employee2).on(employee.superiorId.eq(employee2.id)); assertEquals(ImmutableSet.of(employee, employee2), extract(query.getMetadata())); } @Test public void subQuery() { SQLQuery<?> query = query().from(employee) .where(employee.id.eq(query().from(employee).select(employee.id.max()))); assertEquals(ImmutableSet.of(employee), extract(query.getMetadata())); } @Test public void subQuery2() { QEmployee employee2 = new QEmployee("employee2"); SQLQuery<?> query = query().from(employee) .where(Expressions.list(employee.id, employee.lastname) .in(query().from(employee2).select(employee2.id, employee2.lastname))); assertEquals(ImmutableSet.of(employee, employee2), extract(query.getMetadata())); } }