package squill.mgen; import static squill.tests.TestUtil.assertContains; import java.sql.Types; import org.junit.Before; import org.junit.Test; import squill.TestLogger; import squill.mgen.naming.CamelCaseNaming; import squill.util.FileUtil; /** * @author Michael Hunger * @since 27.08.2008 */ public class VelocityTableCodeGeneratorTest { private TableCodeGenerator tableCodeGenerator; private static final String TEST_PACKAGE = "squill.mgen.test"; @Test public void singleFieldTest() { final DbTable table = new DbTable("TEST", false); final DbColumn nameColumn = new DbColumn(table, "NAME"); nameColumn.setSqlType(Types.VARCHAR); table.addColumn(nameColumn); final MapTable mapTable = new MapTable(table, new CamelCaseNaming(), null, null, new TestLogger()); final String javaCode = tableCodeGenerator.generateJavaTableCode(TEST_PACKAGE, mapTable); assertContains("package", "package " + TEST_PACKAGE, javaCode); assertContains("class", "class TestTable ", javaCode); assertContains("field", "private java.lang.String name;", javaCode); assertContains("getter", "public java.lang.String getName() { return name; }", javaCode); assertContains("setter", "public void setName(java.lang.String name) { this.name = name; }", javaCode); assertContains("table class", "public static class TestTable extends WritableTable<TestData> {", javaCode); assertContains("table name", "public String getTableName() { return \"test\"; }", javaCode); assertContains("table type", "public Class<TestData> getTableType() { return TestData.class; }", javaCode); assertContains("column declaration", "public final Column<java.lang.String, TestData> name =", javaCode); assertContains("column instance", "new Column<java.lang.String, TestData>(\"NAME\", java.lang.String.class, \"name\", this);", javaCode); } @Before public void createGenerator() throws Exception { tableCodeGenerator = new VelocityTableCodeGenerator(FileUtil.path(VelocityTableCodeGenerator.class) + "Model"); } }