package lt.emasina.resthub; import lt.emasina.resthub.util.AbstractParser; import net.sf.jsqlparser.statement.select.Select; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.quartz.SchedulerException; /** * SelectParserTestSuite * @author valdo */ @RunWith(JUnit4.class) public class UpdateParserTest extends AbstractParser { public UpdateParserTest() throws SchedulerException {} @Test public void testSimpleSql() { Select select = getUpdateSelect("select * from test.customer a"); assertNull(select.getWithItemsList()); assertEquals("SELECT * FROM (SELECT * FROM customer) a", select.toString()); } @Test public void testSimpleParameterSql() { Select s1 = getUpdateSelect("select * from test.customer a where a.id = :id"); assertEquals("SELECT * FROM (SELECT * FROM customer) a WHERE a.id = :id", s1.toString()); Select s2 = getUpdateSelect("select * from test.customer_with_param a where a.id = :id"); assertEquals("SELECT * FROM (SELECT * FROM customer WHERE id = :a_id) a WHERE a.id = :id", s2.toString()); } @Test public void testSimpleLateralSubselectSql() { Select s1 = getUpdateSelect("select * from (select * from test.customer a) b"); assertEquals("SELECT * FROM (SELECT * FROM (SELECT * FROM customer) a) b", s1.toString()); Select s2 = getUpdateSelect("select * from (select * from (select * from test.customer a) b join test.customer c) d"); assertEquals("SELECT * FROM (SELECT * FROM (SELECT * FROM (SELECT * FROM customer) a) b JOIN (SELECT * FROM customer) c) d", s2.toString()); } @Test public void testExpressionSubselectSql() { Select s1 = getUpdateSelect("select * from (select * from test.customer a) b where b.id in (select c.id from test.customer c)"); assertEquals("SELECT * FROM (SELECT * FROM (SELECT * FROM customer) a) b WHERE b.id IN (SELECT c.id FROM (SELECT * FROM customer) c)", s1.toString()); Select s2 = getUpdateSelect("select * from (select * from test.customer_with_param a) b where b.id in (select c.id from test.customer_with_param c)"); assertEquals("SELECT * FROM (SELECT * FROM (SELECT * FROM customer WHERE id = :a_id) a) b WHERE b.id IN (SELECT c.id FROM (SELECT * FROM customer WHERE id = :c_id) c)", s2.toString()); Select s3 = getUpdateSelect("select * from (select * from test.customer_with_param a where a.id = :id) b where b.id in (select c.id from test.customer_with_param c where c.id = :id) and b.id = :id"); assertEquals("SELECT * FROM (SELECT * FROM (SELECT * FROM customer WHERE id = :a_id) a WHERE a.id = :id) b WHERE b.id IN (SELECT c.id FROM (SELECT * FROM customer WHERE id = :c_id) c WHERE c.id = :id) AND b.id = :id", s3.toString()); } @Test public void testParametersSql() { getUpdateSelect("select *, :id i, :id1 i1 from test.customer_with_param a join (select * from test.customer_with_param b where b.id = :id) c on a.id = c.id where a.id = :id2"); } @Test public void testArrayParamSql() { getUpdateSelect("select b.* from test.customer_with_array_param b"); } }