package lt.emasina.resthub; import lt.emasina.resthub.util.AbstractParser; import lt.emasina.resthub.server.parser.check.SubSelectDef; import lt.emasina.resthub.server.table.ServerTable; import lt.emasina.resthub.server.table.TableId; 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 CheckParserTest extends AbstractParser { public CheckParserTest() throws SchedulerException {} @Test public void testSimpleSQL() { SubSelectDef ssd = getSubSelectDef("select * from test.customer a"); assertEquals(1, ssd.getTables().size()); assertEquals("a", ssd.getTables().keySet().iterator().next()); assertEquals(0, ssd.getChildren().size()); assertEquals(0, ssd.getParameterNames().size()); } @Test public void testLateralSubSelectSQL() { SubSelectDef ssd = getSubSelectDef("select * from (select * from test.customer a) b"); assertEquals(ssd.getTables().size(), 1); assertEquals("b", ssd.getTables().keySet().iterator().next()); assertEquals(mf.getTable(new TableId("test", "customer")), ssd.getServerTable("a")); assertEquals(0, ssd.getChildren().size()); assertEquals(0, ssd.getParameterNames().size()); } @Test public void testExpressionSubSelectSQL() { SubSelectDef ssd = getSubSelectDef("select * from test.customer a where a.id = (select b.id from test.customer b where b.id = 10)"); assertEquals(ssd.getTables().size(), 1); assertEquals("a", ssd.getTables().keySet().iterator().next()); ServerTable t = mf.getTable(new TableId("test", "customer")); assertEquals(t, ssd.getServerTable("a")); assertEquals(t, ssd.getServerTable("b")); assertEquals(1, ssd.getChildren().size()); assertEquals(0, ssd.getParameterNames().size()); } @Test public void testParametersSubSelectSQL() { SubSelectDef ssd = getSubSelectDef("select * from test.customer a where a.id = (select b.id from test.customer b where b.id = :id) and a.name = :name"); assertEquals(ssd.getTables().size(), 1); assertEquals("a", ssd.getTables().keySet().iterator().next()); ServerTable t = mf.getTable(new TableId("test", "customer")); assertEquals(t, ssd.getServerTable("a")); assertEquals(t, ssd.getServerTable("b")); assertEquals(1, ssd.getChildren().size()); assertEquals(1, ssd.getParameterNames().size()); assertEquals("name", ssd.getParameterNames().iterator().next()); } }