package org.jboss.tools.smooks.ui.bot.testcase; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Platform; import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; import org.eclipse.swtbot.eclipse.gef.finder.SWTGefBot; import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditor; import org.eclipse.swtbot.swt.finder.SWTBot; import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner; import org.jboss.tools.smooks.ui.bot.test.Activator; import org.jboss.tools.smooks.ui.bot.tests.Project; import org.jboss.tools.smooks.ui.bot.tests.SmooksTest; import org.jboss.tools.ui.bot.ext.entity.JavaProjectEntity; import org.jboss.tools.ui.bot.ext.gen.ActionItem; import org.jboss.tools.ui.bot.ext.helper.ContextMenuHelper; import org.jboss.tools.ui.bot.ext.helper.UserLibraryHelper; import org.jboss.tools.ui.bot.ext.types.EntityType; import org.jboss.tools.ui.bot.ext.types.IDELabel; import org.jboss.tools.ui.bot.ext.zest.SWTBotZestContextMenu; import org.jboss.tools.ui.bot.ext.zest.SWTBotZestGraph; import org.jboss.tools.ui.bot.ext.zest.SWTBotZestNode; import org.jboss.tools.ui.bot.ext.zest.SWTZestBot; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(SWTBotJunit4ClassRunner.class) public class SmooksProject extends SmooksTest { boolean projectCreated = false; /** * Create Java Project as dependency for other tests */ @Test public void createProject() { open.perspective(ActionItem.Perspective.JAVA.LABEL); // Create Java Project JavaProjectEntity projectEntity = new JavaProjectEntity(); projectEntity.setProjectName(Project.PROJECT_NAME); eclipse.createJavaProject(projectEntity); // Check if project is created open.viewOpen(ActionItem.View.GeneralProjectExplorer.LABEL); projectExplorer.selectProject(Project.PROJECT_NAME); assertTrue(eclipse.isProjectInPackageExplorer(Project.PROJECT_NAME)); projectCreated = true; } /** * Defines smooks user library inside */ @Test public void defineSmooksUserLibrary() { String[] jarList = UserLibraryHelper.getJarList(Project.SMOOKS_PATH + "/lib"); UserLibraryHelper.addUserLibrary("smooks-1.2.4", jarList); // Check if library is defined TODO } /** * Add Smooks User Library to Smooks project classpath */ @Test public void addSmooksUserLibraryToProject() { // Open Project Properties open.viewOpen(ActionItem.View.GeneralProjectExplorer.LABEL); projectExplorer.selectProject(Project.PROJECT_NAME); ContextMenuHelper.clickContextMenu(projectExplorer.tree(), "Properties"); // Add Library eclipse.waitForShell("Properties for " + Project.PROJECT_NAME); bot.tree().expandNode("Java Build Path").select(); bot.tabItem("Libraries").activate(); bot.button("Add Library...").click(); bot.list().select("User Library"); bot.clickButton(IDELabel.Button.NEXT); bot.table().getTableItem(Project.SMOOKS_LIBNAME).check(); bot.clickButton(IDELabel.Button.FINISH); bot.clickButton(IDELabel.Button.OK); } /** * Ads java classes from resources for testing smoooks engine */ @Test public void addTestingJavaClasses() { // Copy class files try { copyFileFromResource(Project.PROJECT_NAME, "src", "org", "smooks", "Header.java"); copyFileFromResource(Project.PROJECT_NAME, "src", "org", "smooks", "OrderItem.java"); copyFileFromResource(Project.PROJECT_NAME, "src", "org", "smooks", "Order.java"); } catch (IOException e) { log.error(e.getStackTrace()); fail("Unable to copy smooks classes resources"); } projectExplorer.selectProject(Project.PROJECT_NAME); ContextMenuHelper.clickContextMenu(projectExplorer.tree(), "Refresh"); open.viewOpen(ActionItem.View.JavaPackageExplorer.LABEL); // Check file existence assertTrue(packageExplorer.isFilePresent(Project.PROJECT_NAME, "src", "org.smooks", "Header.java")); assertTrue(packageExplorer.isFilePresent(Project.PROJECT_NAME, "src", "org.smooks", "OrderItem.java")); assertTrue(packageExplorer.isFilePresent(Project.PROJECT_NAME, "src", "org.smooks", "Order.java")); } @Test public void addTestingXMLFiles() { // Copy class files try { copyFileFromResource(Project.PROJECT_NAME, "xml", "order.xml"); } catch (IOException e) { log.error(e.getStackTrace()); fail("Unable to copy smooks xml resources"); } open.viewOpen(ActionItem.View.GeneralProjectExplorer.LABEL); projectExplorer.selectProject(Project.PROJECT_NAME); ContextMenuHelper.clickContextMenu(projectExplorer.tree(), "Refresh"); open.viewOpen(ActionItem.View.JavaPackageExplorer.LABEL); // Check file existence assertTrue(packageExplorer.isFilePresent(Project.PROJECT_NAME, "xml", "order.xml")); } @Test public void createSmooksConfig() { SWTBotView view = open .viewOpen(ActionItem.View.JavaPackageExplorer.LABEL); eclipse.selectTreeLocation(view.bot(), Project.PROJECT_NAME, "src"); eclipse.createNew(EntityType.SMOOKS_CONFIG); open.finish(bot.activeShell().bot()); // check file assertTrue(packageExplorer.isFilePresent(Project.PROJECT_NAME, "src", "smooks-config.xml")); } @Test public void defineInputTask() { SWTZestBot zestBot = new SWTZestBot(); SWTBotZestGraph graph = zestBot.getZestGraph(0); SWTBotZestNode node = graph.node("Input Task"); node.click(); bot.sleep(2000, "--------> Trying to click"); SWTBotZestContextMenu menu = node.contextMenu(); menu.clickMenu("Add Task","Java Mapping"); bot.sleep(2000, " Context menu on node clicke <------------"); graph.debugGraph(); bot.sleep(2000, " Check debug info"); // Select Order XML file graph.node("Input Task").click(); bot.clickButton("Add"); bot.clickButton("Browse WorkSpace"); SWTBot shellBot = bot.shell("Select Files").bot(); eclipse.selectTreeLocation(shellBot, Project.PROJECT_NAME, "xml", "order.xml"); bot.clickButton(IDELabel.Button.OK); bot.clickButton(IDELabel.Button.FINISH); bot.activeEditor().save(); graph.connection(graph.node("Input Task"), graph.node("Java Mapping")) .click(); bot.sleep(2000, "check if edge is clicked"); } @Test public void addJavaMapping() { bot.sleep(1000); SWTZestBot zestBot = new SWTZestBot(); SWTBotZestGraph graph = zestBot.getZestGraph(0); graph.node("Java Mapping").click(); bot.sleep(2000, "Check java mapping"); bot.sleep(1000, "check widgets"); SWTWorkbenchBot bot; } @Test public void defineJavaMapping() { SWTGefBot bot = new SWTGefBot(); SWTBotGefEditor editor = bot.gefEditor("smooks-config.xml"); System.out.println(editor); } @Test public void removeProject() { open.viewOpen(ActionItem.View.GeneralProjectExplorer.LABEL); // Action projectExplorer.deleteProject(Project.PROJECT_NAME, true); util.waitForNonIgnoredJobs(); // Check assertFalse(eclipse.isProjectInPackageExplorer(Project.PROJECT_NAME)); } private void copyFileFromResource(String project, String... path) throws IOException { StringBuilder inBuilder = new StringBuilder(); StringBuilder outBuilder = new StringBuilder(); inBuilder.append(FileLocator.toFileURL( Platform.getBundle(Activator.PLUGIN_ID).getEntry("/")) .getFile()); inBuilder.append("resource"); outBuilder.append(Platform.getLocation() + File.separator); outBuilder.append(project); for (int i = 0; i < path.length; i++) { inBuilder.append(File.separator); inBuilder.append(path[i]); outBuilder.append(File.separator); outBuilder.append(path[i]); // Create folder if doesn't exist if ((path.length > 1) && (i == (path.length - 2))) { File folder = new File(outBuilder.toString()); folder.mkdirs(); log.info("Folder created: " + outBuilder.toString()); } } File in = new File(inBuilder.toString()); File out = new File(outBuilder.toString()); FileChannel inChannel = null; FileChannel outChannel = null; inChannel = new FileInputStream(in).getChannel(); outChannel = new FileOutputStream(out).getChannel(); inChannel.transferTo(0, inChannel.size(), outChannel); if (inChannel != null) inChannel.close(); if (outChannel != null) outChannel.close(); log.info("In file: " + inBuilder.toString() + " -> Out file: " + outBuilder.toString()); } }