This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit ed8f4b0c17567e16e66ee63a415ef4d9303ee37c
Author: Siegfried Goeschl <[email protected]>
AuthorDate: Sun Sep 26 23:18:04 2021 +0200

    FREEMARKER-188 Add more tests
---
 .../cli/config/OutputGeneratorsSupplier.java       |  2 +-
 .../cli/config/AbstractOutputGeneratorTest.java    | 62 ++++++++++++++
 .../cli/config/ConfigurationSupplierTest.java      |  2 -
 .../DataSourceSeedingOutputGeneratorTest.java      | 82 ++++++++++++++++++
 .../config/TemplateSeedingOutputGeneratorTest.java | 96 ++++++++++++++++++++++
 5 files changed, 241 insertions(+), 3 deletions(-)

diff --git 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
index 71046df..e1b11b1 100644
--- 
a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
+++ 
b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
@@ -30,7 +30,7 @@ import java.util.stream.Collectors;
 import static java.util.Objects.requireNonNull;
 
 /**
- * Supplies a list of list of <code>OutputGenerators</code> based on the user 
input.
+ * Supplies a list of <code>OutputGenerators</code> based on the user input.
  */
 public class OutputGeneratorsSupplier implements 
Supplier<List<OutputGenerator>> {
 
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
new file mode 100644
index 0000000..16ce464
--- /dev/null
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
@@ -0,0 +1,62 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.cli.picocli.DataSourceDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputMapperDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputSeedDefinition;
+import org.apache.freemarker.generator.cli.picocli.TemplateOutputDefinition;
+import org.apache.freemarker.generator.cli.picocli.TemplateSourceDefinition;
+
+import java.util.Arrays;
+
+import static java.util.Collections.singletonList;
+
+public abstract class AbstractOutputGeneratorTest {
+
+    protected static final String ANY_TEMPLATE_NAME = "cat.ftl";
+    protected static final String ANY_TEMPLATE = 
"src/app/templates/freemarker-generator/" + ANY_TEMPLATE_NAME;
+    protected static final String ANY_DATASOURCE_DIRECTORY = 
"src/test/data/json";
+    protected static final String ANY_DATASOURCE_FILE_01 = 
ANY_DATASOURCE_DIRECTORY + "/environments.json";
+    protected static final String ANY_DATASOURCE_FILE_02 = 
ANY_DATASOURCE_DIRECTORY + "/list.json";
+    protected static final String ANY_OUTPUT_DIRECTORY_NAME = "target";
+
+    protected static OutputGeneratorDefinition outputGeneratorDefinition() {
+        return new OutputGeneratorDefinition();
+    }
+
+    protected static Settings settings(OutputGeneratorDefinition... 
outputGeneratorDefinitions) {
+        return Settings.builder()
+                
.setOutputGeneratorDefinitions(Arrays.asList(outputGeneratorDefinitions))
+                .build();
+    }
+
+    protected static OutputSeedDefinition outputSeedDefinition(String type) {
+        final OutputSeedDefinition outputSeedDefinition = new 
OutputSeedDefinition();
+        outputSeedDefinition.type = type;
+        return outputSeedDefinition;
+    }
+
+    protected static TemplateSourceDefinition templateSourceDefinition(String 
template) {
+        final TemplateSourceDefinition templateSourceDefinition = new 
TemplateSourceDefinition();
+        templateSourceDefinition.template = template;
+        return templateSourceDefinition;
+    }
+
+    protected static DataSourceDefinition dataSourceDefinition(String... 
dataSources) {
+        final DataSourceDefinition dataSourceDefinition = new 
DataSourceDefinition();
+        dataSourceDefinition.dataSources = Arrays.asList(dataSources);
+        return dataSourceDefinition;
+    }
+
+    protected static TemplateOutputDefinition 
templateOutputDirectoryDefinition(String directoryName) {
+        final TemplateOutputDefinition templateOutputDefinition = new 
TemplateOutputDefinition();
+        templateOutputDefinition.outputs = singletonList(directoryName);
+        return templateOutputDefinition;
+    }
+
+    protected static OutputMapperDefinition outputMapperDefinition(String 
template) {
+        final OutputMapperDefinition outputMapperDefinition = new 
OutputMapperDefinition();
+        outputMapperDefinition.outputMapper = template;
+        return outputMapperDefinition;
+    }
+}
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
index 3c8f6ef..ae9fa68 100644
--- 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
@@ -29,8 +29,6 @@ import static org.junit.Assert.assertTrue;
 
 public class ConfigurationSupplierTest {
 
-    private static final String ANY_TEMPLATE_NAME = "templateName";
-
     @Test
     public void shouldProvideDefaultConfiguration() {
         final ConfigurationSupplier configurationSupplier = 
configurationSupplier(settingsBuilder().build());
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
new file mode 100644
index 0000000..b1876e6
--- /dev/null
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
@@ -0,0 +1,82 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.SeedType;
+import org.apache.freemarker.generator.base.output.OutputGenerator;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class DataSourceSeedingOutputGeneratorTest extends 
AbstractOutputGeneratorTest {
+
+    @Test
+    public void shouldCreateOutputGeneratorForAllDataSourcesInDirectory() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = 
outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_DIRECTORY);
+        outputGeneratorDefinition.outputSeedDefinition = 
outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition.outputMapperDefinition = 
outputMapperDefinition("*.txt");
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new 
OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = 
outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, 
outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "environments.txt"), 
outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", 
outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, 
outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "list.txt"), 
outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", 
outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+
+    @Test
+    public void shouldCreateOutputGeneratorForEachDataSource() {
+        final OutputGeneratorDefinition outputGeneratorDefinition_01 = 
outputGeneratorDefinition();
+        outputGeneratorDefinition_01.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_01.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_01.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_FILE_01);
+        outputGeneratorDefinition_01.outputSeedDefinition = 
outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition_01.outputMapperDefinition = 
outputMapperDefinition("*.txt");
+
+        final OutputGeneratorDefinition outputGeneratorDefinition_02 = 
outputGeneratorDefinition();
+        outputGeneratorDefinition_02.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_02.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_02.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition_02.outputSeedDefinition = 
outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition_02.outputMapperDefinition = 
outputMapperDefinition("*.txt");
+
+        final Settings settings = settings(outputGeneratorDefinition_01, 
outputGeneratorDefinition_02);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new 
OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = 
outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, 
outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "environments.txt"), 
outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", 
outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, 
outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "list.txt"), 
outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", 
outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+}
diff --git 
a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java
 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java
new file mode 100644
index 0000000..3316c44
--- /dev/null
+++ 
b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java
@@ -0,0 +1,96 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.SeedType;
+import org.apache.freemarker.generator.base.output.OutputGenerator;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class TemplateSeedingOutputGeneratorTest extends 
AbstractOutputGeneratorTest {
+
+    @Test
+    public void shouldCreateSingleOutputGeneratorForMultipleDataSources() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = 
outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_FILE_01, ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition.outputSeedDefinition = 
outputSeedDefinition(SeedType.TEMPLATE);
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new 
OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = 
outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator = outputGenerators.get(0);
+
+        assertEquals(1, outputGenerators.size());
+        assertEquals(2, outputGenerator.getDataSources().size());
+
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, 
outputGenerator.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), 
outputGenerator.getTemplateOutput().getFile());
+        assertEquals("environments.json", 
outputGenerator.getDataSources().get(0).getFileName());
+        assertEquals("list.json", 
outputGenerator.getDataSources().get(1).getFileName());
+    }
+
+    @Test
+    public void 
shouldCreateSingleOutputGeneratorForAllDataSourcesInDirectory() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = 
outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_DIRECTORY);
+        outputGeneratorDefinition.outputSeedDefinition = 
outputSeedDefinition(SeedType.TEMPLATE);
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new 
OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = 
outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator = outputGenerators.get(0);
+
+        assertEquals(1, outputGenerators.size());
+        assertEquals(2, outputGenerator.getDataSources().size());
+
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, 
outputGenerator.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), 
outputGenerator.getTemplateOutput().getFile());
+        assertEquals("environments.json", 
outputGenerator.getDataSources().get(0).getFileName());
+        assertEquals("list.json", 
outputGenerator.getDataSources().get(1).getFileName());
+    }
+
+    @Test
+    public void shouldCreateMultipleOutputGenerators() {
+        final OutputGeneratorDefinition outputGeneratorDefinition_01 = 
outputGeneratorDefinition();
+        outputGeneratorDefinition_01.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_01.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_01.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_FILE_01);
+        outputGeneratorDefinition_01.outputSeedDefinition = 
outputSeedDefinition(SeedType.TEMPLATE);
+
+        final OutputGeneratorDefinition outputGeneratorDefinition_02 = 
outputGeneratorDefinition();
+        outputGeneratorDefinition_02.templateSourceDefinition = 
templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_02.templateOutputDefinition = 
templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_02.dataSourceDefinition = 
dataSourceDefinition(ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition_02.outputSeedDefinition = 
outputSeedDefinition(SeedType.TEMPLATE);
+
+        final Settings settings = settings(outputGeneratorDefinition_01, 
outputGeneratorDefinition_02);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new 
OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = 
outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, 
outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), 
outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", 
outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, 
outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, 
outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), 
outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", 
outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+}

Reply via email to