Skip to content

Commit 35869d5

Browse files
committed
HBX-3080: Refactor the Gradle integration tests to factor out common code
- Move test method 'JpaDefaultTest#testJpaDefault()' to test class 'GenerateJavaTest' and delete 'JpaDefaultTest' - Move test method 'NoAnnotationsTest#testNoAnnotations()' to test class 'GenerateJavaTest' and delete 'NoAnnotationsTest' - Move test method 'NoGenerics#testNoGenerics()' to test class 'GenerateJavaTest' and delete 'NoGenerics' - Move test method 'UseGenerics#testUseGenerics()' to test class 'GenerateJavaTest' and delete 'UseGenerics' - Create instance variable 'TestTemplate#gradleCommandToExecute' with getter/setter - Create method 'TestTemplate#createProjectAndExecuteGradleCommand()' that uses the stored command - Use method 'createProjectAndExecuteGradleCommand()' in the test methods of 'GenerateJavaTest' - Move class 'TutorialTest' to package 'org.hibernate.tool.gradle' Signed-off-by: Koen Aers <[email protected]>
1 parent 6c0777c commit 35869d5

File tree

7 files changed

+118
-214
lines changed

7 files changed

+118
-214
lines changed

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

Lines changed: 109 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,133 @@
1717
*/
1818
package org.hibernate.tool.gradle;
1919

20+
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.junit.jupiter.api.Assertions.assertFalse;
2022
import static org.junit.jupiter.api.Assertions.assertTrue;
2123

2224
import java.io.File;
23-
import java.io.IOException;
2425
import java.nio.file.Files;
2526

26-
import org.gradle.testkit.runner.BuildResult;
27-
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
28-
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
2927
import org.hibernate.tool.it.gradle.TestTemplate;
28+
import org.junit.jupiter.api.BeforeEach;
3029
import org.junit.jupiter.api.Test;
3130

3231
class GenerateJavaTest extends TestTemplate {
3332

34-
@Test
35-
public void testPackageName() throws Exception {
33+
@BeforeEach
34+
public void beforeEach() {
35+
setGradleCommandToExecute("generateJava");
3636
setDatabaseCreationScript(new String[] {
3737
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))"
3838
});
39+
}
40+
41+
@Test
42+
public void testJpaDefault() throws Exception {
43+
createProjectAndExecuteGradleCommand();
44+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
45+
assertTrue(generatedOutputFolder.exists());
46+
assertTrue(generatedOutputFolder.isDirectory());
47+
assertEquals(1, generatedOutputFolder.list().length);
48+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
49+
assertTrue(generatedPersonJavaFile.exists());
50+
assertTrue(generatedPersonJavaFile.isFile());
51+
String generatedPersonJavaFileContents = new String(
52+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
53+
assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
54+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
55+
}
56+
57+
@Test
58+
public void testNoAnnotations() throws Exception {
59+
setHibernateToolsExtensionSection(
60+
"hibernateTools { \n" +
61+
" generateAnnotations=false \n" +
62+
"}"
63+
);
64+
createProjectAndExecuteGradleCommand();
65+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
66+
assertTrue(generatedOutputFolder.exists());
67+
assertTrue(generatedOutputFolder.isDirectory());
68+
assertEquals(1, generatedOutputFolder.list().length);
69+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
70+
assertTrue(generatedPersonJavaFile.exists());
71+
assertTrue(generatedPersonJavaFile.isFile());
72+
String generatedPersonJavaFileContents = new String(
73+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
74+
assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
75+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
76+
}
77+
78+
@Test
79+
public void testNoGenerics() throws Exception {
80+
setDatabaseCreationScript(new String[] {
81+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
82+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
83+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
84+
});
85+
setHibernateToolsExtensionSection(
86+
"hibernateTools { \n" +
87+
" useGenerics=false \n" +
88+
"}"
89+
);
90+
createProjectAndExecuteGradleCommand();
91+
executeGradleCommand("generateJava");
92+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
93+
assertTrue(generatedOutputFolder.exists());
94+
assertTrue(generatedOutputFolder.isDirectory());
95+
assertEquals(2, generatedOutputFolder.list().length);
96+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
97+
assertTrue(generatedPersonJavaFile.exists());
98+
assertTrue(generatedPersonJavaFile.isFile());
99+
String generatedPersonJavaFileContents = new String(
100+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
101+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
102+
assertFalse(generatedPersonJavaFileContents.contains("Set<Item>"));
103+
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
104+
assertTrue(generatedItemJavaFile.exists());
105+
assertTrue(generatedItemJavaFile.isFile());
106+
String generatedItemJavaFileContents = new String(
107+
Files.readAllBytes(generatedItemJavaFile.toPath()));
108+
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
109+
}
110+
111+
@Test
112+
public void testUseGenerics() throws Exception {
113+
setDatabaseCreationScript(new String[] {
114+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
115+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
116+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
117+
});
118+
createProjectAndExecuteGradleCommand();
119+
executeGradleCommand("generateJava");
120+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
121+
assertTrue(generatedOutputFolder.exists());
122+
assertTrue(generatedOutputFolder.isDirectory());
123+
assertEquals(2, generatedOutputFolder.list().length);
124+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
125+
assertTrue(generatedPersonJavaFile.exists());
126+
assertTrue(generatedPersonJavaFile.isFile());
127+
String generatedPersonJavaFileContents = new String(
128+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
129+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
130+
assertTrue(generatedPersonJavaFileContents.contains("Set<Item>"));
131+
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
132+
assertTrue(generatedItemJavaFile.exists());
133+
assertTrue(generatedItemJavaFile.isFile());
134+
String generatedItemJavaFileContents = new String(
135+
Files.readAllBytes(generatedItemJavaFile.toPath()));
136+
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
137+
}
138+
139+
@Test
140+
public void testPackageName() throws Exception {
39141
setHibernateToolsExtensionSection(
40142
"hibernateTools { \n" +
41143
" packageName = 'foo.model' \n" +
42144
"}"
43145
);
44-
createProject();
45-
executeGradleCommand("generateJava");
146+
createProjectAndExecuteGradleCommand();
46147
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
47148
assertTrue(generatedSourcesFolder.exists());
48149
assertTrue(generatedSourcesFolder.isDirectory());
@@ -51,5 +152,4 @@ public void testPackageName() throws Exception {
51152
assertTrue(fooFile.isFile());
52153
}
53154

54-
55155
}
Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
1-
package org.hibernate.tool.gradle.tutorial;
1+
package org.hibernate.tool.gradle;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertFalse;
55
import static org.junit.jupiter.api.Assertions.assertTrue;
66

77
import java.io.File;
8-
import java.nio.file.Files;
9-
import java.sql.Connection;
10-
import java.sql.DriverManager;
11-
import java.sql.ResultSet;
12-
import java.sql.Statement;
13-
import java.util.List;
148

159
import org.gradle.testkit.runner.BuildResult;
1610
import org.gradle.testkit.runner.GradleRunner;

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

Lines changed: 0 additions & 44 deletions
This file was deleted.

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

Lines changed: 0 additions & 49 deletions
This file was deleted.

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

Lines changed: 0 additions & 55 deletions
This file was deleted.

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

Lines changed: 0 additions & 50 deletions
This file was deleted.

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class TestTemplate {
2929

3030
private String[] databaseCreationScript;
3131
private String hibernateToolsExtensionSection;
32+
private String gradleCommandToExecute;
3233

3334
protected File getProjectDir() { return projectDir; }
3435
protected File getGradlePropertiesFile() { return gradlePropertiesFile; }
@@ -41,6 +42,8 @@ public class TestTemplate {
4142
protected void setDatabaseCreationScript(String[] script) { databaseCreationScript = script; }
4243
protected String getHibernateToolsExtensionSection() { return hibernateToolsExtensionSection; }
4344
protected void setHibernateToolsExtensionSection(String s) { hibernateToolsExtensionSection = s; }
45+
protected String getGradleCommandToExecute() { return gradleCommandToExecute; }
46+
protected void setGradleCommandToExecute(String command) { gradleCommandToExecute = command; }
4447

4548
protected void executeGradleCommand(String ... gradleCommandLine) {
4649
GradleRunner runner = GradleRunner.create();
@@ -60,6 +63,11 @@ protected void createProject() throws Exception {
6063
createHibernatePropertiesFile();
6164
}
6265

66+
protected void createProjectAndExecuteGradleCommand() throws Exception {
67+
createProject();
68+
executeGradleCommand(getGradleCommandToExecute());
69+
}
70+
6371
protected void initGradleProject() throws Exception {
6472
executeGradleCommand(GRADLE_INIT_PROJECT_ARGUMENTS);
6573
setGradlePropertiesFile(new File(getProjectDir(), "gradle.properties"));

0 commit comments

Comments
 (0)