Skip to content

Commit

Permalink
devonfw#1509 Restored original code for adaptTemplatesAndGenerate Test
Browse files Browse the repository at this point in the history
  • Loading branch information
Cedric Betom authored and cedricarnauld123 committed Feb 21, 2023
1 parent 5f0588b commit 80e2023
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.io.File;

import org.apache.commons.io.FileUtils;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
Expand All @@ -19,9 +20,9 @@
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import com.devonfw.cobigen.api.constants.ConfigurationConstants;
import com.devonfw.cobigen.eclipse.common.constants.external.ResourceConstants;
import com.devonfw.cobigen.eclipse.test.common.SystemTest;
import com.devonfw.cobigen.eclipse.test.common.swtbot.AllJobsAreFinished;
import com.devonfw.cobigen.eclipse.test.common.utils.EclipseCobiGenUtils;
import com.devonfw.cobigen.eclipse.test.common.utils.EclipseUtils;

Expand All @@ -31,71 +32,77 @@
*/
public class AdaptTemplatesTest extends SystemTest {

/** Temporary files rule to create temporary folders or files */
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();

/** Root path of the Test Resources */
private static final String resourcesRootPath = "src/main/resources/OpenAPITest/";

/** Line separator, e.g. for windows '\r\n' */
public static final String LINE_SEPARATOR = java.lang.System.getProperty("line.separator");

/**
* Setup workbench appropriately for tests
*
* @throws Exception test fails
*/
@BeforeClass
public static void setupClass() throws Exception {

EclipseUtils.cleanWorkspace(bot, true);

}

/**
* Test generation with OpenAPI input after adapting templates
*
* @throws Exception test fails
*/
public void testBasicOpenAPIGenerationWithAdaptTemplates() throws Exception {

// copy sample project to external location and import it into the workspace
String testProjName = "ExtTestProj";
IJavaProject project = this.tmpMavenProjectRule.createProject(testProjName);
FileUtils.copyFile(new File(resourcesRootPath + "input/adapt-templates.yml"),
project.getUnderlyingResource().getLocation().append("adapt-templates.yml").toFile());
project.getProject().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
this.tmpMavenProjectRule.updateProject();

EclipseCobiGenUtils.runAndCaptureUpdateTemplates(bot);
EclipseCobiGenUtils.runAndCaptureAdaptTemplates(bot);
EclipseUtils.updateMavenProject(bot, ResourceConstants.CONFIG_PROJECT_NAME);

EclipseUtils.openErrorsTreeInProblemsView(bot);

// expand the new file in the package explorer
SWTBotView view = bot.viewById(JavaUI.ID_PACKAGES);
SWTBotTreeItem javaClassItem = view.bot().tree().expandNode(testProjName, "adapt-templates.yml");
javaClassItem.select();

IProject adaptedTemplatesProj = ResourcesPlugin.getWorkspace().getRoot()
.getProject(ConfigurationConstants.COBIGEN_TEMPLATES);

assertThat(adaptedTemplatesProj.exists()).isTrue();
}

/**
* Test of testBasicOpenAPIGenerationWithAdaptTemplates with custom COBIGEN_HOME
* environment variable
*
* @throws Exception test fails
*/
@Test
public void testAdaptTemplates() throws Exception {

File tmpProject = this.tempFolder.newFolder("playground", "project", "templates");
withEnvironmentVariable(ConfigurationConstants.CONFIG_ENV_HOME, tmpProject.getParentFile().getAbsolutePath())
.execute(() -> testBasicOpenAPIGenerationWithAdaptTemplates());
}
/** Temporary files rule to create temporary folders or files */
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();

/** Root path of the Test Resources */
private static final String resourcesRootPath = "src/main/resources/OpenAPITest/";

/** Line separator, e.g. for windows '\r\n' */
public static final String LINE_SEPARATOR = java.lang.System.getProperty("line.separator");

/**
* Setup workbench appropriately for tests
*
* @throws Exception test fails
*/
@BeforeClass
public static void setupClass() throws Exception {

EclipseUtils.cleanWorkspace(bot, true);
}

/**
* Test for external projects (not in workspace) taken as input for generation
*
* @throws Exception test fails
*/
public void testBasicOpenAPIGenerationWithAdaptTemplates() throws Exception {

// copy sample project to external location and import it into the workspace
String testProjName = "ExtTestProj";
IJavaProject project = this.tmpMavenProjectRule.createProject(testProjName);
FileUtils.copyFile(new File(resourcesRootPath + "input/adapt-templates.yml"),
project.getUnderlyingResource().getLocation().append("adapt-templates.yml").toFile());
project.getProject().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
this.tmpMavenProjectRule.updateProject();

EclipseCobiGenUtils.runAndCaptureUpdateTemplates(bot);
EclipseCobiGenUtils.runAndCaptureAdaptTemplates(bot);
EclipseUtils.updateMavenProject(bot, ResourceConstants.CONFIG_PROJECT_NAME);

EclipseUtils.openErrorsTreeInProblemsView(bot);

// expand the new file in the package explorer
SWTBotView view = bot.viewById(JavaUI.ID_PACKAGES);
SWTBotTreeItem javaClassItem = view.bot().tree().expandNode(testProjName, "adapt-templates.yml");
javaClassItem.select();

// execute CobiGen
EclipseCobiGenUtils.processCobiGen(bot, javaClassItem, 25000, "CRUD devon4j Server>CRUD REST services");
bot.waitUntil(new AllJobsAreFinished(), 10000);
// increase timeout as the openAPI parser is slow on initialization
EclipseCobiGenUtils.confirmSuccessfullGeneration(bot, 40000);

bot.waitUntil(new AllJobsAreFinished(), 10000);
IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(testProjName);
IFile generationResult = proj.getFile(
"src/main/java/com/devonfw/test/sampledatamanagement/service/impl/rest/SampledatamanagementRestServiceImpl.java");

assertThat(generationResult.exists()).isTrue();
}

/**
* Test of testBasicOpenAPIGenerationWithAdaptTemplates with custom COBIGEN_HOME environment variable
*
* @throws Exception test fails
*/
@Test
public void testAdaptTemplatesAndGenerate() throws Exception {

File tmpProject = this.tempFolder.newFolder("playground", "project");
withEnvironmentVariable("COBIGEN_HOME", tmpProject.toPath().toString())
.execute(() -> testBasicOpenAPIGenerationWithAdaptTemplates());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import static org.eclipse.swtbot.swt.finder.waits.Conditions.shellIsActive;
import static org.eclipse.swtbot.swt.finder.waits.Conditions.widgetIsEnabled;

import java.util.concurrent.TimeoutException;

import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
Expand All @@ -16,8 +18,6 @@
import org.eclipse.swtbot.swt.finder.widgets.SWTBotButton;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.eclipse.swtbot.swt.finder.widgets.TimeoutException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.devonfw.cobigen.eclipse.common.constants.external.CobiGenDialogConstants;
Expand Down Expand Up @@ -394,10 +394,6 @@ public static void runAndCaptureAdaptTemplates(SWTWorkbenchBot bot) throws Excep
SWTBotShell warningDialog = bot.shell("Warning!");
warningDialog.bot().button("Ok").click();

takeScreenshot(bot, "Create new POM!");
SWTBotShell finishDialog = bot.shell("Create new POM");
finishDialog.bot().button("Finish").click();

SWTBotShell informationDialog = bot.shell("Information");
bot.waitUntil(new AnyShellIsActive("Information"), DEFAULT_TIMEOUT);
takeScreenshot(bot, "Adapt Templates Information");
Expand Down

0 comments on commit 80e2023

Please sign in to comment.