Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,133 @@
*/
package org.hibernate.tool.gradle;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

import org.gradle.testkit.runner.BuildResult;
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
import org.hibernate.tool.it.gradle.TestTemplate;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class GenerateJavaTest extends TestTemplate {

@Test
public void testPackageName() throws Exception {
@BeforeEach
public void beforeEach() {
setGradleCommandToExecute("generateJava");
setDatabaseCreationScript(new String[] {
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))"
});
}

@Test
public void testJpaDefault() throws Exception {
createProjectAndExecuteGradleCommand();
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
assertTrue(generatedOutputFolder.exists());
assertTrue(generatedOutputFolder.isDirectory());
assertEquals(1, generatedOutputFolder.list().length);
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
assertTrue(generatedPersonJavaFile.exists());
assertTrue(generatedPersonJavaFile.isFile());
String generatedPersonJavaFileContents = new String(
Files.readAllBytes(generatedPersonJavaFile.toPath()));
assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
}

@Test
public void testNoAnnotations() throws Exception {
setHibernateToolsExtensionSection(
"hibernateTools { \n" +
" generateAnnotations=false \n" +
"}"
);
createProjectAndExecuteGradleCommand();
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
assertTrue(generatedOutputFolder.exists());
assertTrue(generatedOutputFolder.isDirectory());
assertEquals(1, generatedOutputFolder.list().length);
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
assertTrue(generatedPersonJavaFile.exists());
assertTrue(generatedPersonJavaFile.isFile());
String generatedPersonJavaFileContents = new String(
Files.readAllBytes(generatedPersonJavaFile.toPath()));
assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
}

@Test
public void testNoGenerics() throws Exception {
setDatabaseCreationScript(new String[] {
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
});
setHibernateToolsExtensionSection(
"hibernateTools { \n" +
" useGenerics=false \n" +
"}"
);
createProjectAndExecuteGradleCommand();
executeGradleCommand("generateJava");
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
assertTrue(generatedOutputFolder.exists());
assertTrue(generatedOutputFolder.isDirectory());
assertEquals(2, generatedOutputFolder.list().length);
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
assertTrue(generatedPersonJavaFile.exists());
assertTrue(generatedPersonJavaFile.isFile());
String generatedPersonJavaFileContents = new String(
Files.readAllBytes(generatedPersonJavaFile.toPath()));
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
assertFalse(generatedPersonJavaFileContents.contains("Set<Item>"));
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
assertTrue(generatedItemJavaFile.exists());
assertTrue(generatedItemJavaFile.isFile());
String generatedItemJavaFileContents = new String(
Files.readAllBytes(generatedItemJavaFile.toPath()));
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
}

@Test
public void testUseGenerics() throws Exception {
setDatabaseCreationScript(new String[] {
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
});
createProjectAndExecuteGradleCommand();
executeGradleCommand("generateJava");
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
assertTrue(generatedOutputFolder.exists());
assertTrue(generatedOutputFolder.isDirectory());
assertEquals(2, generatedOutputFolder.list().length);
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
assertTrue(generatedPersonJavaFile.exists());
assertTrue(generatedPersonJavaFile.isFile());
String generatedPersonJavaFileContents = new String(
Files.readAllBytes(generatedPersonJavaFile.toPath()));
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
assertTrue(generatedPersonJavaFileContents.contains("Set<Item>"));
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
assertTrue(generatedItemJavaFile.exists());
assertTrue(generatedItemJavaFile.isFile());
String generatedItemJavaFileContents = new String(
Files.readAllBytes(generatedItemJavaFile.toPath()));
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
}

@Test
public void testPackageName() throws Exception {
setHibernateToolsExtensionSection(
"hibernateTools { \n" +
" packageName = 'foo.model' \n" +
"}"
);
createProject();
executeGradleCommand("generateJava");
createProjectAndExecuteGradleCommand();
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
assertTrue(generatedSourcesFolder.exists());
assertTrue(generatedSourcesFolder.isDirectory());
Expand All @@ -51,5 +152,4 @@ public void testPackageName() throws Exception {
assertTrue(fooFile.isFile());
}


}
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
package org.hibernate.tool.gradle.tutorial;
package org.hibernate.tool.gradle;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.File;
import java.nio.file.Files;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;

import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class TestTemplate {

private String[] databaseCreationScript;
private String hibernateToolsExtensionSection;
private String gradleCommandToExecute;

protected File getProjectDir() { return projectDir; }
protected File getGradlePropertiesFile() { return gradlePropertiesFile; }
Expand All @@ -41,6 +42,8 @@ public class TestTemplate {
protected void setDatabaseCreationScript(String[] script) { databaseCreationScript = script; }
protected String getHibernateToolsExtensionSection() { return hibernateToolsExtensionSection; }
protected void setHibernateToolsExtensionSection(String s) { hibernateToolsExtensionSection = s; }
protected String getGradleCommandToExecute() { return gradleCommandToExecute; }
protected void setGradleCommandToExecute(String command) { gradleCommandToExecute = command; }

protected void executeGradleCommand(String ... gradleCommandLine) {
GradleRunner runner = GradleRunner.create();
Expand All @@ -60,6 +63,11 @@ protected void createProject() throws Exception {
createHibernatePropertiesFile();
}

protected void createProjectAndExecuteGradleCommand() throws Exception {
createProject();
executeGradleCommand(getGradleCommandToExecute());
}

protected void initGradleProject() throws Exception {
executeGradleCommand(GRADLE_INIT_PROJECT_ARGUMENTS);
setGradlePropertiesFile(new File(getProjectDir(), "gradle.properties"));
Expand Down