/******************************************************************************* * Copyright (c) 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.maven.ui.bot.test.configurator; import static org.junit.Assert.assertEquals; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerReqType; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerRequirement.JBossServer; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog; import org.jboss.reddeer.eclipse.ui.perspectives.JavaEEPerspective; import org.jboss.reddeer.requirements.cleanworkspace.CleanWorkspaceRequirement.CleanWorkspace; import org.jboss.reddeer.requirements.openperspective.OpenPerspectiveRequirement.OpenPerspective; import org.jboss.reddeer.requirements.server.ServerReqState; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.combo.LabeledCombo; import org.jboss.reddeer.swt.impl.menu.ContextMenu; import org.jboss.reddeer.swt.impl.tree.DefaultTreeItem; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.tools.maven.reddeer.maven.ui.preferences.ConfiguratorPreferencePage; import org.jboss.tools.maven.reddeer.requirement.NewRepositoryRequirement.DefineMavenRepository; import org.jboss.tools.maven.reddeer.requirement.NewRepositoryRequirement.PredefinedMavenRepository; import org.jboss.tools.maven.reddeer.wizards.ConfigureMavenRepositoriesWizard; import org.jboss.tools.maven.ui.bot.test.project.SeamProjectTest; import org.jboss.tools.maven.ui.bot.test.utils.ProjectHasNature; import org.jboss.tools.seam.reddeer.preferences.SeamPreferencePage; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * @author Rastislav Wagner * */ @OpenPerspective(JavaEEPerspective.class) @JBossServer(state=ServerReqState.PRESENT, type=ServerReqType.WILDFLY8x) @DefineMavenRepository(predefinedRepositories = { @PredefinedMavenRepository(ID="jboss-public-repository",snapshots=true) }) public class SeamConfiguratorTest extends AbstractConfiguratorsTest{ private String projectNameNoRuntime = PROJECT_NAME_SEAM+"_noRuntime"; @BeforeClass public static void setupRuntimes(){ WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog(); preferenceDialog.open(); SeamPreferencePage sp = new SeamPreferencePage(); preferenceDialog.select(sp); sp.addRuntime(SeamProjectTest.SEAM_2_1_NAME, SeamProjectTest.SEAM_2_1, "2.1"); sp.addRuntime(SeamProjectTest.SEAM_2_2_NAME, SeamProjectTest.SEAM_2_2, "2.2"); sp.addRuntime(SeamProjectTest.SEAM_2_3_NAME, SeamProjectTest.SEAM_2_3, "2.3"); preferenceDialog.ok(); } @AfterClass public static void cleanRepo(){ WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog(); preferenceDialog.open(); ConfiguratorPreferencePage jm = new ConfiguratorPreferencePage(); preferenceDialog.select(jm); ConfigureMavenRepositoriesWizard mr = jm.configureRepositories(); boolean deleted = mr.removeAllRepos(); if(deleted){ mr.confirm(); } else { mr.cancel(); } preferenceDialog.ok(); } @Test public void testSeamConfigurator21Seam(){ createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam", "2.1.2.GA"); //dependency type EJB updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.1")); } @Test public void testSeamConfigurator22Seam(){ createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam", "2.2.2.Final"); //dependency type EJB updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.2")); } @Test public void testSeamConfigurator22SeamDebug(){ createWebProject(projectNameNoRuntime, null,false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam-debug", "2.2.2.Final"); //dependency type EJB updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.2")); } @Test public void testSeamConfigurator23Seam(){ createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam", "2.3.0.Beta2"); //dependency type EJB updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.3")); } @Test public void testSeamConfigurator23SeamUI() { createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam-ui", "2.3.0.Beta2"); updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.3")); } @Test public void testSeamConfigurator23SeamPDF(){ createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam-pdf", "2.3.0.Beta2"); updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.3")); } @Test public void testSeamConfigurator23SeamRemoting(){ createWebProject(projectNameNoRuntime, null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam-remoting", "2.3.0.Beta2"); updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.3")); } @Test public void testSeamConfigurator23SeamIOC(){ createWebProject(projectNameNoRuntime,null, false); convertToMavenProject(projectNameNoRuntime, "war", false); addDependency(projectNameNoRuntime, "org.jboss.seam", "jboss-seam-ioc", "2.3.0.Beta2"); updateConf(projectNameNoRuntime); new WaitUntil(new ProjectHasNature(projectNameNoRuntime, SEAM_FACET, "2.3")); } @Test public void testSeamRuntimeConfigurator23(){ createWebProject(PROJECT_NAME_SEAM, null, false); convertToMavenProject(PROJECT_NAME_SEAM, "war", false); addDependency(PROJECT_NAME_SEAM, "org.jboss.seam", "jboss-seam", "2.3.0.Final"); //dependency type EJB updateConf(PROJECT_NAME_SEAM); new WaitUntil(new ProjectHasNature(PROJECT_NAME_SEAM, SEAM_FACET, "2.3")); String seamRuntime = getSeamRuntime(PROJECT_NAME_SEAM); assertEquals("Project "+PROJECT_NAME_SEAM+" with jboss-seam dependency doesn't have proper seam runtime chosen", SeamProjectTest.SEAM_2_3_NAME, seamRuntime); } @Test public void testSeamRuntimeConfigurator22(){ createWebProject(PROJECT_NAME_SEAM, null, false); convertToMavenProject(PROJECT_NAME_SEAM, "war", false); addDependency(PROJECT_NAME_SEAM, "org.jboss.seam", "jboss-seam", "2.2.2.Final"); //dependency type EJB updateConf(PROJECT_NAME_SEAM); new WaitUntil(new ProjectHasNature(PROJECT_NAME_SEAM, SEAM_FACET, "2.2")); String seamRuntime = getSeamRuntime(PROJECT_NAME_SEAM); assertEquals("Project "+PROJECT_NAME_SEAM+" with jboss-seam dependency doesn't have proper seam runtime chosen", SeamProjectTest.SEAM_2_2_NAME, seamRuntime); } @Test public void testSeamRuntimeConfigurator21(){ createWebProject(PROJECT_NAME_SEAM, null, false); convertToMavenProject(PROJECT_NAME_SEAM, "war", false); addDependency(PROJECT_NAME_SEAM, "org.jboss.seam", "jboss-seam", "2.1.2.GA"); //dependency type EJB updateConf(PROJECT_NAME_SEAM); new WaitUntil(new ProjectHasNature(PROJECT_NAME_SEAM, SEAM_FACET, "2.1")); String seamRuntime = getSeamRuntime(PROJECT_NAME_SEAM); assertEquals("Project "+PROJECT_NAME_SEAM+" with jboss-seam dependency doesn't have proper seam runtime chosen", SeamProjectTest.SEAM_2_1_NAME, seamRuntime); } private String getSeamRuntime(String project){ ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(project).select(); new ContextMenu("Properties").select(); new DefaultTreeItem("Seam Settings").select(); String runtime = new LabeledCombo("Seam Runtime:").getSelection(); new PushButton("OK").click(); return runtime; } }