blob: c75a121b360f2280afc59cf507f36205d4123063 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
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 {
/**
* One data source -> one output generator
*/
@Test
public void shouldCreateSingleOutputGeneratorForMultipleDataSources() {
final OutputGeneratorDefinition outputGeneratorDefinition = outputGeneratorDefinition();
outputGeneratorDefinition.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
outputGeneratorDefinition.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_FILE);
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_FILE), outputGenerator.getTemplateOutput().getFile());
assertEquals("environments.json", outputGenerator.getDataSources().get(0).getFileName());
assertEquals("list.json", outputGenerator.getDataSources().get(1).getFileName());
}
/**
* N file data sources for a given directory -> one output generator
*/
@Test
public void shouldCreateSingleOutputGeneratorForMultipleDataSourcesInDirectory() {
final OutputGeneratorDefinition outputGeneratorDefinition = outputGeneratorDefinition();
outputGeneratorDefinition.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
outputGeneratorDefinition.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_FILE);
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_FILE), outputGenerator.getTemplateOutput().getFile());
assertEquals("environments.json", outputGenerator.getDataSources().get(0).getFileName());
assertEquals("list.json", outputGenerator.getDataSources().get(1).getFileName());
}
/**
* N output generator definitions -> N output generators
*/
@Test
public void shouldCreateOutputGeneratorForEachOutputGeneratorDefinition() {
final OutputGeneratorDefinition outputGeneratorDefinition_01 = outputGeneratorDefinition();
outputGeneratorDefinition_01.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
outputGeneratorDefinition_01.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_FILE);
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_FILE);
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_FILE), 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_FILE), outputGenerator_02.getTemplateOutput().getFile());
assertEquals("list.json", outputGenerator_02.getDataSources().get(0).getFileName());
}
}