/*
* Copyright 2015, The Querydsl Team (http://www.querydsl.com/team)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.querydsl.sql.codegen.ant;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.junit.BeforeClass;
import org.junit.Test;
public class AntMetaDataExporterTest {
private static final String url = "jdbc:h2:./target/dbs/h2_AntMetaDataExporterTest";
@BeforeClass
public static void setUp() throws SQLException {
Connection conn = DriverManager.getConnection(url, "sa", "");
try {
Statement stmt = conn.createStatement();
try {
stmt.execute("drop table test if exists");
stmt.execute("create table test (id int)");
} finally {
stmt.close();
}
} finally {
conn.close();
}
}
@Test
public void execute() {
AntMetaDataExporter exporter = new AntMetaDataExporter();
exporter.setJdbcDriver("org.h2.Driver");
exporter.setJdbcUser("sa");
exporter.setJdbcUrl(url);
exporter.setPackageName("test");
exporter.setTargetFolder("target/AntMetaDataExporterTest");
exporter.execute();
assertTrue(new File("target/AntMetaDataExporterTest").exists());
assertTrue(new File("target/AntMetaDataExporterTest/test/QTest.java").exists());
}
@Test
public void execute_with_beans() {
AntMetaDataExporter exporter = new AntMetaDataExporter();
exporter.setJdbcDriver("org.h2.Driver");
exporter.setJdbcUser("sa");
exporter.setJdbcUrl(url);
exporter.setPackageName("test");
exporter.setTargetFolder("target/AntMetaDataExporterTest2");
exporter.setExportBeans(true);
exporter.setNamePrefix("Q");
exporter.setNameSuffix("");
exporter.setBeanPrefix("");
exporter.setBeanSuffix("Bean");
exporter.execute();
assertTrue(new File("target/AntMetaDataExporterTest2").exists());
assertTrue(new File("target/AntMetaDataExporterTest2/test/QTest.java").exists());
assertTrue(new File("target/AntMetaDataExporterTest2/test/TestBean.java").exists());
}
@Test
public void execute_with_import() {
AntMetaDataExporter exporter = new AntMetaDataExporter();
exporter.setJdbcDriver("org.h2.Driver");
exporter.setJdbcUser("sa");
exporter.setJdbcUrl(url);
exporter.setPackageName("test");
exporter.setTargetFolder("target/AntMetaDataExporterTest3");
exporter.setExportBeans(true);
exporter.setNamePrefix("Q");
exporter.setNameSuffix("");
exporter.setBeanPrefix("");
exporter.setBeanSuffix("Bean");
exporter.setImports(new String[]{"com.pck1" , "com.pck2" , "com.Q1" , "com.Q2"});
exporter.execute();
assertTrue(new File("target/AntMetaDataExporterTest3").exists());
assertTrue(new File("target/AntMetaDataExporterTest3/test/QTest.java").exists());
assertTrue(new File("target/AntMetaDataExporterTest3/test/TestBean.java").exists());
}
@Test
public void execute_inside_ant() {
File buildFile = new File(getClass().getResource("/build.xml").getFile());
Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
p.addReference("ant.projectHelper", helper);
helper.parse(p, buildFile);
p.executeTarget(p.getDefaultTarget());
assertTrue(new File("target/AntMetaDataExporterTest4").exists());
assertTrue(new File("target/AntMetaDataExporterTest4/test/QTest.java").exists());
}
}