/******************************************************************************* * Copyright (c) 2010-2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.ws.ui.bot.test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.util.logging.Logger; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement.JBossServer; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.core.matcher.WithTextMatcher; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.eclipse.ui.console.ConsoleView; import org.jboss.reddeer.eclipse.ui.perspectives.JavaEEPerspective; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizardDialog; import org.jboss.reddeer.eclipse.ui.wizards.datatransfer.WizardProjectsImportPage; import org.jboss.reddeer.junit.requirement.inject.InjectRequirement; import org.jboss.reddeer.junit.runner.RedDeerSuite; import org.jboss.reddeer.requirements.openperspective.OpenPerspectiveRequirement.OpenPerspective; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.button.RadioButton; import org.jboss.reddeer.swt.impl.ctab.DefaultCTabItem; import org.jboss.reddeer.swt.impl.menu.ShellMenu; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.workbench.impl.shell.WorkbenchShell; import org.jboss.tools.common.reddeer.label.IDELabel; import org.jboss.tools.ws.ui.bot.test.utils.ProjectHelper; import org.jboss.tools.ws.ui.bot.test.utils.ServersViewHelper; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.runner.RunWith; /** * Basic test base for all web service bot tests * * @author jjankovi * */ @RunWith(RedDeerSuite.class) @OpenPerspective(JavaEEPerspective.class) @JBossServer() public class WSTestBase { @InjectRequirement private static ServerRequirement serverReq; private String wsProjectName = null; protected static final Logger LOGGER = Logger.getLogger(WSTestBase.class .getName()); protected final String LINE_SEPARATOR = System .getProperty("line.separator"); @Before public void setup() { if (getEarProjectName() != null && !ProjectHelper.projectExists(getEarProjectName())) { ProjectHelper.createEARProject(getEarProjectName()); if (!ProjectHelper.projectExists(getWsProjectName())) { ProjectHelper.createProjectForEAR(getWsProjectName(), getEarProjectName()); } } if (!ProjectHelper.projectExists(getWsProjectName())) { ProjectHelper.createProject(getWsProjectName()); } } @After public void cleanup() { ConsoleView consoleView = new ConsoleView(); if (consoleView.isOpened()) { consoleView.clearConsole(); } } @AfterClass public static void deleteAll() { deleteAllProjectsFromServer(); deleteAllProjects(); } protected static String getConfiguredRuntimeName() { return serverReq.getRuntimeNameLabelText(serverReq.getConfig()); } protected static String getConfiguredServerName() { return serverReq.getServerNameLabelText(serverReq.getConfig()); } protected static String getConfiguredServerType() { return serverReq.getConfig().getServerFamily().getLabel(); } protected static String getConfiguredServerVersion() { return serverReq.getConfig().getServerFamily().getVersion(); } protected boolean projectExists(String name) { ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.open(); return projectExplorer.containsProject(name); } protected static void deleteAllProjects() { ProjectHelper.deleteAllProjects(); } protected static void deleteAllProjectsFromServer() { ServersViewHelper.removeAllProjectsFromServer(getConfiguredServerName()); } protected void openJavaFile(String projectName, String pkgName, String javaFileName) { new ProjectExplorer().getProject(projectName) .getProjectItem("Java Resources", "src", pkgName, javaFileName).open(); } protected String getWsProjectName() { return wsProjectName; } protected void setWsProjectName(String wsProjectName) { this.wsProjectName = wsProjectName; } protected String getEarProjectName() { return null; } protected String getWsPackage() { return null; } protected String getWsName() { return null; } protected void assertWebServiceTesterIsActive() { assertTrue("Web Service Tester view should be active", new DefaultCTabItem(new WorkbenchShell(), new WithTextMatcher(IDELabel.View.WEB_SERVICE_TESTER)).isEnabled()); } protected static void importWSTestProject(String projectName) { try { importProject(new File("resources/projects/" + projectName).getCanonicalPath()); } catch(IOException e) { e.printStackTrace(); fail(e.getMessage()); } ProjectHelper.addConfiguredRuntimeIntoProject(projectName, getConfiguredRuntimeName()); ProjectHelper.setProjectJRE(projectName); cleanAllProjects(); AbstractWait.sleep(TimePeriod.getCustom(2)); } private static void importProject(String projectLocation) { ExternalProjectImportWizardDialog importDialog = new ExternalProjectImportWizardDialog(); importDialog.open(); WizardProjectsImportPage importPage = new WizardProjectsImportPage(); importPage.setRootDirectory(projectLocation); assertFalse("There is no project to import", importPage.getProjects().isEmpty()); importPage.selectAllProjects(); importPage.copyProjectsIntoWorkspace(true); importDialog.finish(); } /** * Cleans All Projects */ protected static void cleanAllProjects() { ProjectHelper.cleanAllProjects(); } }