Cgen tests validating actual generation results
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java
new file mode 100644
index 0000000..14e9b20
--- /dev/null
+++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java
@@ -0,0 +1,158 @@
+package org.apache.cayenne.gen;
+
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.ObjAttribute;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.map.SQLTemplateDescriptor;
+import org.apache.cayenne.map.SelectQueryDescriptor;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import static org.junit.Assert.assertEquals;
+
+public class BaseTemplatesGenerationTest {
+
+ @Rule
+ public TemporaryFolder folder= new TemporaryFolder();
+
+ protected CgenConfiguration cgenConfiguration;
+ protected ClassGenerationAction action;
+ protected DataMap dataMap;
+ protected ObjEntity objEntity;
+
+ @Before
+ public void setUp() {
+ cgenConfiguration = new CgenConfiguration(false);
+ action = new ClassGenerationAction(cgenConfiguration);
+ dataMap = new DataMap();
+ dataMap.setDefaultPackage("test");
+ objEntity = new ObjEntity();
+ }
+
+ @Test
+ public void testSelectQuery() throws Exception {
+ dataMap.setName("SelectQuery");
+
+ String param = "param";
+ String qualifierString = "name = $" + param;
+
+ DbEntity dbEntity = new DbEntity();
+ ObjAttribute attribute = new ObjAttribute("name");
+ attribute.setDbAttributePath("testKey");
+ attribute.setType("java.lang.String");
+ objEntity.addAttribute(attribute);
+ objEntity.setDbEntity(dbEntity);
+ objEntity.setClassName("Test");
+
+ SelectQueryDescriptor selectQueryDescriptor = new SelectQueryDescriptor();
+ Expression exp = ExpressionFactory.exp(qualifierString);
+ selectQueryDescriptor.setQualifier(exp);
+ selectQueryDescriptor.setName("select");
+ selectQueryDescriptor.setRoot(objEntity);
+
+ Collection<QueryDescriptor> descriptors = new ArrayList<>();
+ descriptors.add(selectQueryDescriptor);
+
+ DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, descriptors);
+
+ execute(dataMapArtifact);
+ }
+
+ @Test
+ public void testSQLTemplate() throws Exception {
+ dataMap.setName("SQLTemplate");
+
+ DbEntity dbEntity = new DbEntity();
+ objEntity.setDbEntity(dbEntity);
+ objEntity.setClassName("Test");
+
+ SQLTemplateDescriptor sqlTemplateDescriptor = new SQLTemplateDescriptor();
+ sqlTemplateDescriptor.setSql("SELECT * FROM table");
+ sqlTemplateDescriptor.setRoot(objEntity);
+ sqlTemplateDescriptor.setName("select");
+ sqlTemplateDescriptor.setRoot(objEntity);
+
+ Collection<QueryDescriptor> descriptors = new ArrayList<>();
+ descriptors.add(sqlTemplateDescriptor);
+
+ DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, descriptors);
+
+ execute(dataMapArtifact);
+ }
+
+ @Test
+ public void testGenClass() throws Exception {
+ dataMap.setName("ObjEntity");
+
+ DbEntity dbEntity = new DbEntity();
+ dbEntity.setName("EntityTest");
+ objEntity.setDbEntity(dbEntity);
+ objEntity.setClassName("test.ObjEntity");
+ objEntity.setDataMap(dataMap);
+
+ EntityArtifact entityArtifact = new EntityArtifact(objEntity);
+
+ execute(entityArtifact);
+ }
+
+ public void execute(Artifact artifact) throws Exception{
+ cgenConfiguration.addArtifact(artifact);
+
+ cgenConfiguration.setRootPath(folder.getRoot().toPath());
+ cgenConfiguration.setRelPath(Paths.get("."));
+ cgenConfiguration.loadEntity(objEntity);
+ cgenConfiguration.setDataMap(dataMap);
+
+ action.setUtilsFactory(new DefaultToolsUtilsFactory());
+ action.execute();
+
+ String targetName = dataMap.getName();
+
+ fileComparison(targetName);
+ fileComparison("auto/_" + targetName);
+ }
+
+ private void fileComparison(String fileName) throws IOException {
+ String expected = readResource(fileName);
+
+ StringBuilder generated = new StringBuilder();
+ Files.readAllLines(new File(folder.getRoot() + "/test/" + fileName + ".java").toPath())
+ .forEach(generated::append);
+
+ assertEquals(expected, generated.toString());
+ }
+
+ private String readResource(String name) throws IOException {
+ String resourceName = "templateTest/" + name + ".java";
+ InputStream stream = getClass().getClassLoader().getResourceAsStream(resourceName);
+ if(stream == null) {
+ throw new FileNotFoundException("Resource not found: " + resourceName);
+ }
+ StringBuilder expected = new StringBuilder();
+ try(BufferedReader resource = new BufferedReader(new InputStreamReader(stream))) {
+ String line;
+ while ((line = resource.readLine()) != null) {
+ expected.append(line);
+ }
+ }
+
+ return expected.toString();
+ }
+}
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java
deleted file mode 100644
index eb4bf65..0000000
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package org.apache.cayenne.gen;
-
-import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.map.*;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.Collection;
-
-import static org.junit.Assert.assertEquals;
-
-public class CgenTest {
-
- protected ClassGenerationAction action;
- protected CgenConfiguration cgenConfiguration;
-
- protected DataMap dataMap;
- protected ObjEntity objEntity;
-
- @Before
- public void setUp() throws Exception {
- cgenConfiguration = new CgenConfiguration(false);
- action = new ClassGenerationAction(cgenConfiguration);
-
- dataMap = new DataMap();
- objEntity = new ObjEntity();
- }
-
- @After
- public void tearDown() throws Exception {
- dataMap = null;
- objEntity = null;
- }
-
- @Test
- public void testSelectQuery() throws Exception {
-
- String param = "param";
- String qualifierString = "name = $" + param;
-
- DbEntity dbEntity = new DbEntity();
- ObjAttribute attribute = new ObjAttribute("name");
- attribute.setDbAttributePath("testKey");
- attribute.setType("java.lang.String");
- objEntity.addAttribute(attribute);
- objEntity.setDbEntity(dbEntity);
- objEntity.setClassName("Test");
-
- SelectQueryDescriptor selectQueryDescriptor = new SelectQueryDescriptor();
- Expression exp = ExpressionFactory.exp(qualifierString);
- selectQueryDescriptor.setQualifier(exp);
- selectQueryDescriptor.setName("select");
- selectQueryDescriptor.setRoot(objEntity);
-
- dataMap.setName("DataMapTest");
- dataMap.setDefaultPackage("test");
-
- Collection<QueryDescriptor> descriptors = new ArrayList<>();
- descriptors.add(selectQueryDescriptor);
-
- DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, descriptors);
-
- execute(dataMapArtifact); }
-
- @Test
- public void testSQLTemplate() throws Exception {
-
- DbEntity dbEntity = new DbEntity();
- objEntity.setDbEntity(dbEntity);
- objEntity.setClassName("Test");
-
- SQLTemplateDescriptor sqlTemplateDescriptor = new SQLTemplateDescriptor();
- sqlTemplateDescriptor.setSql("SELECT * FROM table");
- sqlTemplateDescriptor.setRoot(objEntity);
- sqlTemplateDescriptor.setName("select");
- sqlTemplateDescriptor.setRoot(objEntity);
-
- dataMap.setName("SQLTemplate");
- dataMap.setDefaultPackage("test");
-
- Collection<QueryDescriptor> descriptors = new ArrayList<>();
- descriptors.add(sqlTemplateDescriptor);
-
- DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, descriptors);
-
- execute(dataMapArtifact);
- }
-
- @Test
- public void testGenClass() throws Exception {
-
- dataMap.setName("EntityTest");
-
- DbEntity dbEntity = new DbEntity();
- dbEntity.setName("EntityTest");
- objEntity.setDbEntity(dbEntity);
- objEntity.setClassName("test.EntityTest");
- objEntity.setDataMap(dataMap);
-
- EntityArtifact entityArtifact = new EntityArtifact(objEntity);
-
- execute(entityArtifact);
- }
-
- public void execute(Artifact artifact) throws Exception{
- cgenConfiguration.addArtifact(artifact);
-
- cgenConfiguration.setRelPath("src/test/resources");
- cgenConfiguration.loadEntity(objEntity);
- cgenConfiguration.setDataMap(dataMap);
-
- action.setUtilsFactory(new DefaultToolsUtilsFactory());
- action.execute();
-
- fileComparison(dataMap.getName());
-
- fileComparison("auto/_" + dataMap.getName());
-
- rmdir(new File(cgenConfiguration.getRelPath() + "/test"));
- }
-
- public void fileComparison(String fileName) {
-
- try {
- FileReader fileReader1 = new FileReader(new File("src/test/resources/templateTest/" + fileName + ".java"));
- BufferedReader reader1 = new BufferedReader(fileReader1);
- String lineFile1;
- String string1 = "";
-
- FileReader fileReader2 = new FileReader(new File("src/test/resources/test/" + fileName + ".java"));
- BufferedReader reader2 = new BufferedReader(fileReader2);
- String lineFile2;
- String string2 = "";
-
- while ((lineFile1 = reader1.readLine()) != null
- && (lineFile2 = reader2.readLine()) != null) {
- string1 += lineFile1;
- string2 += lineFile2;
- }
-
- assertEquals(string1, string2);
-
- reader1.close();
- reader2.close();
- fileReader1.close();
- fileReader2.close();
-
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- public void rmdir(File file) {
- if (!file.exists())
- return;
-
- if (file.isDirectory()) {
- for (File f : file.listFiles()) {
- rmdir(f);
- }
- }
- file.delete();
- }
-}
diff --git a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java b/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java
deleted file mode 100644
index b3bb67d..0000000
--- a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package test;
-
-import test.auto._DataMapTest;
-
-public class DataMapTest extends _DataMapTest {
-
- private static DataMapTest instance;
-
- private DataMapTest() {}
-
- public static DataMapTest getInstance() {
- if(instance == null) {
- instance = new DataMapTest();
- }
-
- return instance;
- }
-}
diff --git a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java b/cayenne-cgen/src/test/resources/templateTest/EntityTest.java
deleted file mode 100644
index 6cbda4e..0000000
--- a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package test;
-
-import test.auto._EntityTest;
-
-public class EntityTest extends _EntityTest {
-
- private static final long serialVersionUID = 1L;
-
-}
-
diff --git a/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java
new file mode 100644
index 0000000..1a036c0
--- /dev/null
+++ b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java
@@ -0,0 +1,10 @@
+package test;
+
+import test.auto._ObjEntity;
+
+public class ObjEntity extends _ObjEntity {
+
+ private static final long serialVersionUID = 1L;
+
+}
+
diff --git a/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java
new file mode 100644
index 0000000..49144de
--- /dev/null
+++ b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java
@@ -0,0 +1,18 @@
+package test;
+
+import test.auto._SelectQuery;
+
+public class SelectQuery extends _SelectQuery {
+
+ private static SelectQuery instance;
+
+ private SelectQuery() {}
+
+ public static SelectQuery getInstance() {
+ if(instance == null) {
+ instance = new SelectQuery();
+ }
+
+ return instance;
+ }
+}
diff --git a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
similarity index 93%
rename from cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java
rename to cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
index da83fb7..83d68ff 100644
--- a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java
+++ b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java
@@ -7,12 +7,12 @@
import org.apache.cayenne.BaseDataObject;
/**
- * Class _EntityTest was generated by Cayenne.
+ * Class _ObjEntity was generated by Cayenne.
* It is probably a good idea to avoid changing this class manually,
* since it may be overwritten next time code is regenerated.
* If you need to make any customizations, please use subclass.
*/
-public abstract class _EntityTest extends BaseDataObject {
+public abstract class _ObjEntity extends BaseDataObject {
private static final long serialVersionUID = 1L;
diff --git a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
similarity index 95%
rename from cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java
rename to cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
index f4d05c0..7b99f0e 100644
--- a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java
+++ b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java
@@ -11,7 +11,7 @@
* since it may be overwritten next time code is regenerated.
* If you need to make any customizations, please use subclass.
*/
-public class _DataMapTest {
+public class _SelectQuery {
public static final String SELECT_QUERYNAME = "select";