Search in sources :

Example 31 with TemplateTo

use of com.devonfw.cobigen.api.to.TemplateTo in project cobigen by devonfw.

the class XmlPluginIntegrationTest method testUmlMethodAttributeExtraction.

/**
 * Tests simple extraction of methods and attributes out of XMI UML.
 *
 * @throws Exception test fails
 */
@Test
public void testUmlMethodAttributeExtraction() throws Exception {
    // arrange
    Path configFolder = new File(testFileRootPath + "uml-classdiag").toPath();
    File xmlFile = configFolder.resolve("completeUmlXmi.xml").toFile();
    CobiGen cobigen = CobiGenFactory.create(configFolder.toUri());
    Object doc = cobigen.read(xmlFile.toPath(), UTF_8);
    File targetFolder = this.tmpFolder.newFolder("testSimpleUmlEntityExtraction");
    // act
    List<TemplateTo> matchingTemplates = cobigen.getMatchingTemplates(doc);
    List<TemplateTo> templateOfInterest = matchingTemplates.stream().filter(e -> e.getId().equals("${className}MethodsAttributes.txt")).collect(Collectors.toList());
    assertThat(templateOfInterest).hasSize(1);
    GenerationReportTo generate = cobigen.generate(doc, templateOfInterest, targetFolder.toPath());
    // assert
    assertThat(generate).isSuccessful();
    File[] files = targetFolder.listFiles();
    assertThat(files).extracting(e -> e.getName()).containsExactlyInAnyOrder("StudentMethodsAttributes.txt", "UserMethodsAttributes.txt", "MarksMethodsAttributes.txt", "TeacherMethodsAttributes.txt");
    assertThat(targetFolder.toPath().resolve("StudentMethodsAttributes.txt")).hasContent("public newOperation");
    assertThat(targetFolder.toPath().resolve("UserMethodsAttributes.txt")).hasContent("");
    assertThat(targetFolder.toPath().resolve("MarksMethodsAttributes.txt")).hasContent("private int attributeExample");
    assertThat(targetFolder.toPath().resolve("TeacherMethodsAttributes.txt")).hasContent("");
}
Also used : Path(java.nio.file.Path) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) FileUtils(org.apache.commons.io.FileUtils) Test(org.junit.Test) AssertionFailedError(junit.framework.AssertionFailedError) CobiGen(com.devonfw.cobigen.api.CobiGen) Collectors(java.util.stream.Collectors) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) GenerationReportTo(com.devonfw.cobigen.api.to.GenerationReportTo) List(java.util.List) PluginNotAvailableException(com.devonfw.cobigen.api.exception.PluginNotAvailableException) CobiGenFactory(com.devonfw.cobigen.impl.CobiGenFactory) CobiGenAsserts.assertThat(com.devonfw.cobigen.api.assertj.CobiGenAsserts.assertThat) Rule(org.junit.Rule) Charset(java.nio.charset.Charset) Paths(java.nio.file.Paths) Assert(org.junit.Assert) GenerationReportToAssert(com.devonfw.cobigen.api.assertj.GenerationReportToAssert) Path(java.nio.file.Path) TemporaryFolder(org.junit.rules.TemporaryFolder) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) GenerationReportTo(com.devonfw.cobigen.api.to.GenerationReportTo) CobiGen(com.devonfw.cobigen.api.CobiGen) File(java.io.File) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) Test(org.junit.Test)

Example 32 with TemplateTo

use of com.devonfw.cobigen.api.to.TemplateTo in project cobigen by devonfw.

the class XmlPluginIntegrationTest method testUmlEntityExtraction.

/**
 * Tests the generation of entities out of XMI UML. </br>
 * </br>
 * In marks class there is an attribute from which it has to generate getters and setters and also the associations
 * between marks and the rest of connected classes. </br>
 * </br>
 * The file nullMultiplicity contains a class called TestingNullMultiplicity which is connected to marks but without
 * multiplicity defined.
 *
 * @throws Exception test fails
 */
@Test
public void testUmlEntityExtraction() throws Exception {
    // arrange
    Path configFolder = new File(testFileRootPath + "uml-classdiag").toPath();
    File xmlFile = configFolder.resolve("nullMultiplicity.xml").toFile();
    CobiGen cobigen = CobiGenFactory.create(configFolder.toUri());
    Object doc = cobigen.read(xmlFile.toPath(), UTF_8);
    File targetFolder = this.tmpFolder.newFolder("testSimpleUmlEntityExtraction");
    // act
    List<TemplateTo> matchingTemplates = cobigen.getMatchingTemplates(doc);
    List<TemplateTo> templateOfInterest = matchingTemplates.stream().filter(e -> e.getId().equals("${className}Entity.txt")).collect(Collectors.toList());
    assertThat(templateOfInterest).hasSize(1);
    GenerationReportTo generate = cobigen.generate(doc, templateOfInterest, targetFolder.toPath());
    // assert
    assertThat(generate).isSuccessful();
    File[] files = targetFolder.listFiles();
    assertThat(files).extracting(e -> e.getName()).containsExactlyInAnyOrder("StudentEntity.txt", "UserEntity.txt", "MarksEntity.txt", "TeacherEntity.txt", "TestingNullMultiplicityEntity.txt");
    assertThat(targetFolder.toPath().resolve("MarksEntity.txt")).hasContent("import java.util.List;\n" + "import javax.persistence.Column;\n" + "import javax.persistence.Entity;\n" + "import javax.persistence.Table;\n" + "@Entity\n" + "@Table(name=Marks)\n" + "public class MarksEntity extends ApplicationPersistenceEntity implements Marks {\n" + "private static final long serialVersionUID = 1L;\n" + "private int attributeExample;\n" + "// I want one\n" + "private Student student;\n" + "@Override\n" + "public Student getStudent(){\n" + "return this.student;\n" + "}\n" + "@Override\n" + "public void setStudent(Student student){\n" + "student = this.student;\n" + "}\n" + "@Override\n" + "public Integer getAttributeExample(){\n" + "return this.attributeExample;\n" + "}\n" + "public void setAttributeExample(Integer attributeExample){\n" + "this.attributeExample = attributeExample;\n" + "}\n" + "}");
    assertThat(targetFolder.toPath().resolve("TestingNullMultiplicityEntity.txt")).hasContent("import java.util.List;\n" + "import javax.persistence.Column;\n" + "import javax.persistence.Entity;\n" + "import javax.persistence.Table;\n" + "@Entity\n" + "@Table(name=TestingNullMultiplicity)\n" + "public class TestingNullMultiplicityEntity extends ApplicationPersistenceEntity implements TestingNullMultiplicity {\n" + "private static final long serialVersionUID = 1L;\n" + "}\n");
}
Also used : Path(java.nio.file.Path) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) FileUtils(org.apache.commons.io.FileUtils) Test(org.junit.Test) AssertionFailedError(junit.framework.AssertionFailedError) CobiGen(com.devonfw.cobigen.api.CobiGen) Collectors(java.util.stream.Collectors) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) GenerationReportTo(com.devonfw.cobigen.api.to.GenerationReportTo) List(java.util.List) PluginNotAvailableException(com.devonfw.cobigen.api.exception.PluginNotAvailableException) CobiGenFactory(com.devonfw.cobigen.impl.CobiGenFactory) CobiGenAsserts.assertThat(com.devonfw.cobigen.api.assertj.CobiGenAsserts.assertThat) Rule(org.junit.Rule) Charset(java.nio.charset.Charset) Paths(java.nio.file.Paths) Assert(org.junit.Assert) GenerationReportToAssert(com.devonfw.cobigen.api.assertj.GenerationReportToAssert) Path(java.nio.file.Path) TemporaryFolder(org.junit.rules.TemporaryFolder) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) GenerationReportTo(com.devonfw.cobigen.api.to.GenerationReportTo) CobiGen(com.devonfw.cobigen.api.CobiGen) File(java.io.File) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) Test(org.junit.Test)

Example 33 with TemplateTo

use of com.devonfw.cobigen.api.to.TemplateTo in project cobigen by devonfw.

the class XmlPluginIntegrationTest method generateTemplateAndTestOutput.

/**
 * Generates the template with the given templateId and reads the generated File with the outputFileName. It will be
 * asserted, that this file has the expectedFileContents passed as parameter.
 *
 * @param templateId Template to generate
 * @param outputFileName file name of the generated output File
 * @param expectedFileContents generated contents to be expected (asserted)
 * @return the resulting report
 * @throws Exception if anything fails.
 */
private GenerationReportToAssert generateTemplateAndTestOutput(String templateId, String outputFileName, String expectedFileContents) throws Exception {
    CobiGen cobiGen = CobiGenFactory.create(this.cobigenConfigFolder.toURI());
    // wenn der temporäre Output Ordner breits existiert, dann wird dieser wiederverwendet.
    File tmpFolderCobiGen = new File(this.tmpFolder.getRoot().getAbsolutePath() + File.separator + "cobigen_output");
    if (!tmpFolderCobiGen.exists()) {
        tmpFolderCobiGen = this.tmpFolder.newFolder("cobigen_output");
    }
    // read xml File as Document
    Object inputDocument = cobiGen.read(this.testinput.toPath(), Charset.forName("UTF-8"));
    // find matching templates and use test template for generation
    List<TemplateTo> templates = cobiGen.getMatchingTemplates(inputDocument);
    boolean templateFound = false;
    GenerationReportToAssert asserts = null;
    for (TemplateTo template : templates) {
        if (template.getId().equals(templateId)) {
            GenerationReportTo report = cobiGen.generate(inputDocument, template, Paths.get(tmpFolderCobiGen.getAbsolutePath()), false, (taskname, progress) -> {
            });
            asserts = assertThat(report);
            File expectedFile = new File(tmpFolderCobiGen.getAbsoluteFile() + File.separator + outputFileName);
            Assert.assertTrue(expectedFile.exists());
            // validate results if expected file contents are defined
            if (expectedFileContents != null) {
                Assert.assertEquals(expectedFileContents, FileUtils.readFileToString(expectedFile, StandardCharsets.UTF_8));
            }
            templateFound = true;
            break;
        }
    }
    if (!templateFound) {
        throw new AssertionFailedError("Test template not found");
    }
    return asserts;
}
Also used : GenerationReportToAssert(com.devonfw.cobigen.api.assertj.GenerationReportToAssert) GenerationReportTo(com.devonfw.cobigen.api.to.GenerationReportTo) CobiGen(com.devonfw.cobigen.api.CobiGen) AssertionFailedError(junit.framework.AssertionFailedError) File(java.io.File) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo)

Example 34 with TemplateTo

use of com.devonfw.cobigen.api.to.TemplateTo in project cobigen by devonfw.

the class TemplateScanTest method testCorrectDestinationResoution.

/**
 * Tests the correct destination resolution for resources obtained by template-scans
 *
 * @throws Exception test fails
 */
@Test
public void testCorrectDestinationResoution() throws Exception {
    Object input = PluginMockFactory.createSimpleJavaConfigurationMock();
    File generationRootFolder = this.tmpFolder.newFolder("generationRootFolder");
    // Useful to see generates if necessary, comment the generationRootFolder above then
    // File generationRootFolder = new File(testFileRootPath + "generates");
    // pre-processing
    File templatesFolder = new File(testFileRootPath);
    CobiGen target = CobiGenFactory.create(templatesFolder.toURI());
    List<TemplateTo> templates = target.getMatchingTemplates(input);
    assertThat(templates).isNotNull();
    TemplateTo targetTemplate = getTemplateById(templates, "prefix_${variables.component#cap_first#replace('1','ONE')}.java");
    assertThat(targetTemplate).isNotNull();
    // Execution
    target.generate(input, targetTemplate, Paths.get(generationRootFolder.toURI()), false);
    // Validation
    assertThat(new File(generationRootFolder.getAbsolutePath() + SystemUtils.FILE_SEPARATOR + "src" + SystemUtils.FILE_SEPARATOR + "main" + SystemUtils.FILE_SEPARATOR + "java" + SystemUtils.FILE_SEPARATOR + "TestCOMP1" + SystemUtils.FILE_SEPARATOR + "CompONE.java")).exists();
}
Also used : CobiGen(com.devonfw.cobigen.api.CobiGen) File(java.io.File) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) Test(org.junit.Test) AbstractApiTest(com.devonfw.cobigen.systemtest.common.AbstractApiTest)

Example 35 with TemplateTo

use of com.devonfw.cobigen.api.to.TemplateTo in project cobigen by devonfw.

the class TemplateScanTest method testCorrectDestinationResoution_emptyPathElement.

/**
 * Tests the correct destination resolution for resources obtained by template-scans in the case of an empty path
 * element
 *
 * @throws Exception test fails
 */
@Test
public void testCorrectDestinationResoution_emptyPathElement() throws Exception {
    Object input = PluginMockFactory.createSimpleJavaConfigurationMock();
    File generationRootFolder = this.tmpFolder.newFolder("generationRootFolder");
    // Useful to see generates if necessary, comment the generationRootFolder above then
    // File generationRootFolder = new File(testFileRootPath + "generates");
    // pre-processing
    File templatesFolder = new File(testFileRootPath);
    CobiGen target = CobiGenFactory.create(templatesFolder.toURI());
    List<TemplateTo> templates = target.getMatchingTemplates(input);
    assertThat(templates).isNotNull();
    TemplateTo targetTemplate = getTemplateById(templates, "prefix_Test.java");
    assertThat(targetTemplate).isNotNull();
    // Execution
    target.generate(input, targetTemplate, Paths.get(generationRootFolder.toURI()), false);
    // Validation
    assertThat(new File(generationRootFolder.getAbsolutePath() + SystemUtils.FILE_SEPARATOR + "src" + SystemUtils.FILE_SEPARATOR + "main" + SystemUtils.FILE_SEPARATOR + "java" + SystemUtils.FILE_SEPARATOR + "base" + SystemUtils.FILE_SEPARATOR + "Test.java")).exists();
}
Also used : CobiGen(com.devonfw.cobigen.api.CobiGen) File(java.io.File) TemplateTo(com.devonfw.cobigen.api.to.TemplateTo) Test(org.junit.Test) AbstractApiTest(com.devonfw.cobigen.systemtest.common.AbstractApiTest)

Aggregations

TemplateTo (com.devonfw.cobigen.api.to.TemplateTo)41 CobiGen (com.devonfw.cobigen.api.CobiGen)30 File (java.io.File)28 Test (org.junit.Test)27 GenerationReportTo (com.devonfw.cobigen.api.to.GenerationReportTo)25 AbstractApiTest (com.devonfw.cobigen.systemtest.common.AbstractApiTest)12 IncrementTo (com.devonfw.cobigen.api.to.IncrementTo)9 Path (java.nio.file.Path)9 List (java.util.List)9 AssertionFailedError (junit.framework.AssertionFailedError)9 Paths (java.nio.file.Paths)6 Set (java.util.Set)6 HashSet (java.util.HashSet)5 Collectors (java.util.stream.Collectors)5 CobiGenAsserts.assertThat (com.devonfw.cobigen.api.assertj.CobiGenAsserts.assertThat)4 GenerationReportToAssert (com.devonfw.cobigen.api.assertj.GenerationReportToAssert)4 ComparableIncrement (com.devonfw.cobigen.eclipse.generator.entity.ComparableIncrement)4 CobiGenFactory (com.devonfw.cobigen.impl.CobiGenFactory)4 AbstractIntegrationTest (com.devonfw.cobigen.javaplugin.integrationtest.common.AbstractIntegrationTest)4 StandardCharsets (java.nio.charset.StandardCharsets)4