Skip to content

Commit 992ec9b

Browse files
committed
HBX-3080: Refactor the Gradle integration tests to factor out common code
- Add instance variable 'databaseCreationScript' to TestTemplate along with getter/setter - Extract the database creation SQL and use the setter above to populate the instance variable - Pull up method 'createDatabase()' to the class TestTemplate - Omit the calls to 'verifyDatabase()' and remove the method Signed-off-by: Koen Aers <[email protected]>
1 parent 3e09374 commit 992ec9b

File tree

6 files changed

+43
-97
lines changed

6 files changed

+43
-97
lines changed

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/JpaDefaultTest.java

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,20 @@ public class JpaDefaultTest extends TestTemplate {
2222

2323
@Test
2424
public void testTutorial() throws Exception {
25+
setDatabaseCreationScript(new String[] {
26+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
27+
"insert into PERSON values (1, 'foo')"
28+
});
2529
assertTrue(getProjectDir().exists());
2630
createGradleProject();
2731
editGradleBuildFile();
2832
editGradlePropertiesFile();
2933
createDatabase();
3034
createHibernatePropertiesFile();
31-
verifyDatabase();
3235
executeGenerateJavaTask();
3336
verifyProject();
3437
}
3538

36-
private void verifyDatabase() throws Exception {
37-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
38-
ResultSet resultSet = connection.createStatement().executeQuery("select * from PERSON");
39-
assertTrue(resultSet.next());
40-
assertEquals(1, resultSet.getInt(1));
41-
assertEquals("foo", resultSet.getString(2));
42-
}
43-
44-
private void createDatabase() throws Exception {
45-
String CREATE_PERSON_TABLE = "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))";
46-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
47-
Statement statement = connection.createStatement();
48-
statement.execute(CREATE_PERSON_TABLE);
49-
statement.execute("insert into PERSON values (1, 'foo')");
50-
statement.close();
51-
connection.close();
52-
assertTrue(getDatabaseFile().exists());
53-
assertTrue(getDatabaseFile().isFile());
54-
}
55-
5639
private void executeGenerateJavaTask() throws Exception {
5740
GradleRunner gradleRunner = GradleRunner.create();
5841
gradleRunner.forwardOutput();

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoAnnotationsTest.java

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,20 @@ public class NoAnnotationsTest extends TestTemplate {
2222

2323
@Test
2424
public void testTutorial() throws Exception {
25+
setDatabaseCreationScript(new String[] {
26+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
27+
"insert into PERSON values (1, 'foo')"
28+
});
2529
assertTrue(getProjectDir().exists());
2630
createGradleProject();
2731
editGradleBuildFile();
2832
editGradlePropertiesFile();
2933
createDatabase();
3034
createHibernatePropertiesFile();
31-
verifyDatabase();
3235
executeGenerateJavaTask();
3336
verifyProject();
3437
}
3538

36-
private void verifyDatabase() throws Exception {
37-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
38-
ResultSet resultSet = connection.createStatement().executeQuery("select * from PERSON");
39-
assertTrue(resultSet.next());
40-
assertEquals(1, resultSet.getInt(1));
41-
assertEquals("foo", resultSet.getString(2));
42-
}
43-
44-
private void createDatabase() throws Exception {
45-
String CREATE_PERSON_TABLE = "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))";
46-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
47-
Statement statement = connection.createStatement();
48-
statement.execute(CREATE_PERSON_TABLE);
49-
statement.execute("insert into PERSON values (1, 'foo')");
50-
statement.close();
51-
connection.close();
52-
assertTrue(getDatabaseFile().exists());
53-
assertTrue(getDatabaseFile().isFile());
54-
}
55-
5639
private void executeGenerateJavaTask() throws Exception {
5740
GradleRunner gradleRunner = GradleRunner.create();
5841
gradleRunner.forwardOutput();

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoGenerics.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ public class NoGenerics extends TestTemplate {
2121

2222
@Test
2323
public void testTutorial() throws Exception {
24+
setDatabaseCreationScript(new String[] {
25+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
26+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
27+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
28+
});
2429
assertTrue(getProjectDir().exists());
2530
createGradleProject();
2631
editGradleBuildFile();
@@ -30,23 +35,7 @@ public void testTutorial() throws Exception {
3035
executeGenerateJavaTask();
3136
verifyProject();
3237
}
33-
34-
private void createDatabase() throws Exception {
35-
String CREATE_PERSON_TABLE =
36-
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))";
37-
String CREATE_ITEM_TABLE =
38-
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
39-
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))";
40-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
41-
Statement statement = connection.createStatement();
42-
statement.execute(CREATE_PERSON_TABLE);
43-
statement.execute(CREATE_ITEM_TABLE);
44-
statement.close();
45-
connection.close();
46-
assertTrue(getDatabaseFile().exists());
47-
assertTrue(getDatabaseFile().isFile());
48-
}
49-
38+
5039
private void executeGenerateJavaTask() throws Exception {
5140
GradleRunner gradleRunner = GradleRunner.create();
5241
gradleRunner.forwardOutput();

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/UseGenerics.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ public class UseGenerics extends TestTemplate {
2121

2222
@Test
2323
public void testTutorial() throws Exception {
24+
setDatabaseCreationScript(new String[] {
25+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
26+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
27+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
28+
});
2429
assertTrue(getProjectDir().exists());
2530
createGradleProject();
2631
editGradleBuildFile();
@@ -30,23 +35,7 @@ public void testTutorial() throws Exception {
3035
executeGenerateJavaTask();
3136
verifyProject();
3237
}
33-
34-
private void createDatabase() throws Exception {
35-
String CREATE_PERSON_TABLE =
36-
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))";
37-
String CREATE_ITEM_TABLE =
38-
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
39-
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))";
40-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
41-
Statement statement = connection.createStatement();
42-
statement.execute(CREATE_PERSON_TABLE);
43-
statement.execute(CREATE_ITEM_TABLE);
44-
statement.close();
45-
connection.close();
46-
assertTrue(getDatabaseFile().exists());
47-
assertTrue(getDatabaseFile().isFile());
48-
}
49-
38+
5039
private void executeGenerateJavaTask() throws Exception {
5140
GradleRunner gradleRunner = GradleRunner.create();
5241
gradleRunner.forwardOutput();

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/tutorial/TutorialTest.java

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,20 @@ public class TutorialTest extends TestTemplate {
2222

2323
@Test
2424
public void testTutorial() throws Exception {
25+
setDatabaseCreationScript(new String[] {
26+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
27+
"insert into PERSON values (1, 'foo')"
28+
});
2529
assertTrue(getProjectDir().exists());
2630
createGradleProject();
2731
editGradleBuildFile();
2832
editGradlePropertiesFile();
2933
createDatabase();
3034
createHibernatePropertiesFile();
31-
verifyDatabase();
3235
executeGenerateJavaTask();
3336
verifyProject();
3437
}
3538

36-
private void verifyDatabase() throws Exception {
37-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
38-
ResultSet resultSet = connection.createStatement().executeQuery("select * from PERSON");
39-
assertTrue(resultSet.next());
40-
assertEquals(1, resultSet.getInt(1));
41-
assertEquals("foo", resultSet.getString(2));
42-
}
43-
44-
private void createDatabase() throws Exception {
45-
String CREATE_PERSON_TABLE = "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))";
46-
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
47-
Statement statement = connection.createStatement();
48-
statement.execute(CREATE_PERSON_TABLE);
49-
statement.execute("insert into PERSON values (1, 'foo')");
50-
statement.close();
51-
connection.close();
52-
assertTrue(getDatabaseFile().exists());
53-
assertTrue(getDatabaseFile().isFile());
54-
}
55-
5639
private void executeGenerateJavaTask() throws Exception {
5740
GradleRunner gradleRunner = GradleRunner.create();
5841
gradleRunner.forwardOutput();

gradle/plugin/src/functionalTest/java/org/hibernate/tool/it/gradle/TestTemplate.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55

66
import java.io.File;
77
import java.nio.file.Files;
8+
import java.sql.Connection;
9+
import java.sql.DriverManager;
10+
import java.sql.Statement;
811
import java.util.List;
912

1013
import org.junit.jupiter.api.io.TempDir;
@@ -24,13 +27,17 @@ public class TestTemplate {
2427
private File gradleBuildFile;
2528
private File databaseFile;
2629

30+
private String[] databaseCreationScript;
31+
2732
protected File getProjectDir() { return projectDir; }
2833
protected File getGradlePropertiesFile() { return gradlePropertiesFile; }
2934
protected void setGradlePropertiesFile(File f) { this.gradlePropertiesFile = f; }
3035
protected File getGradleBuildFile() { return gradleBuildFile; }
3136
protected void setGradleBuildFile(File f) { gradleBuildFile = f; }
3237
protected File getDatabaseFile() { return databaseFile; }
3338
protected void setDatabaseFile(File f) { databaseFile = f; }
39+
protected String[] getDatabaseCreationScript() { return databaseCreationScript; }
40+
protected void setDatabaseCreationScript(String[] script) { databaseCreationScript = script; }
3441

3542
protected void createGradleProject() throws Exception {
3643
GradleRunner runner = GradleRunner.create();
@@ -86,6 +93,18 @@ protected void createHibernatePropertiesFile() throws Exception {
8693
assertTrue(hibernatePropertiesFile.exists());
8794
}
8895

96+
protected void createDatabase() throws Exception {
97+
Connection connection = DriverManager.getConnection(constructJdbcConnectionString());
98+
Statement statement = connection.createStatement();
99+
for (String sql : getDatabaseCreationScript()) {
100+
statement.execute(sql);
101+
}
102+
statement.close();
103+
connection.close();
104+
assertTrue(getDatabaseFile().exists());
105+
assertTrue(getDatabaseFile().isFile());
106+
}
107+
89108
protected String constructH2DatabaseDependencyLine() {
90109
return " implementation 'com.h2database:h2:" + System.getenv("H2_VERSION") + "'";
91110
}

0 commit comments

Comments
 (0)