/************************************************************************************* * Copyright (c) 2008-2011 Red Hat, Inc. and others. * All rights reserved. This program and the accompanying materials * are 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: * JBoss by Red Hat - Initial implementation. ************************************************************************************/ package org.jboss.tools.maven.ui.bot.test.project; import org.jboss.ide.eclipse.as.reddeer.server.requirement.ServerReqType; 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.eclipse.datatools.ui.DriverDefinition; import org.jboss.reddeer.eclipse.datatools.ui.DriverTemplate; import org.jboss.reddeer.eclipse.datatools.ui.preference.DriverDefinitionPreferencePage; import org.jboss.reddeer.eclipse.datatools.ui.wizard.ConnectionProfileWizard; import org.jboss.reddeer.eclipse.datatools.ui.wizard.DriverDefinitionWizard; import org.jboss.reddeer.junit.requirement.inject.InjectRequirement; 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.NextButton; import org.jboss.reddeer.swt.impl.table.DefaultTable; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.tools.maven.ui.bot.test.AbstractMavenSWTBotTest; import org.jboss.tools.maven.ui.bot.test.utils.ProjectHasErrors; import org.jboss.tools.seam.reddeer.preferences.SeamPreferencePage; import org.jboss.tools.seam.reddeer.wizards.SeamProjectDialog; import org.jboss.tools.seam.reddeer.wizards.SeamProjectFifthPage; import org.jboss.tools.seam.reddeer.wizards.SeamProjectFirstPage; import org.junit.BeforeClass; import org.junit.Test; import org.jboss.tools.seam.reddeer.perspective.SeamPerspective; import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog; /** * @author Rastislav Wagner * */ @OpenPerspective(SeamPerspective.class) @JBossServer(state=ServerReqState.PRESENT, type=ServerReqType.WILDFLY8x) public class SeamProjectTest extends AbstractMavenSWTBotTest { @InjectRequirement private ServerRequirement sr; public static final String SEAM_WEB_PROJECT = "seamWeb"; public static final String SEAM_EAR_PROJECT = "seamEar"; public static final String SEAM_2_3 = System.getProperty("jbosstools.test.seam.2.3.0.home"); public static final String SEAM_2_3_NAME = "jboss-seam-2.3.0.Final"; public static final String SEAM_2_2 = System.getProperty("jbosstools.test.seam.2.2.0.home"); public static final String SEAM_2_2_NAME = "jboss-seam-2.2.0.GA"; public static final String SEAM_2_1 = System.getProperty("jbosstools.test.seam.2.1.0.home"); public static final String SEAM_2_1_NAME = "jboss-seam-2.1.2"; public static final String CONNECTION_PROFILE_NAME = "DefaultDS"; public static final String HSQL_DRIVER_DEFINITION_ID ="DriverDefn.Hypersonic DB"; public static final String HSQL_DRIVER_NAME ="Hypersonic DB"; public static final String HSQL_DRIVER_TEMPLATE_ID = "org.eclipse.datatools.enablement.hsqldb.1_8.driver"; public static final String DTP_DB_URL_PROPERTY_ID = "org.eclipse.datatools.connectivity.db.URL"; public static final String HSQL_PROFILE_ID = "org.eclipse.datatools.enablement.hsqldb.connectionProfile"; public static final String HSQLDB_DRIVER_LOCATION =System.getProperty("hsqldb.driver"); public static final String ACCEPTED_ERROR_TYPE = "Maven Project Build Lifecycle Mapping Problem"; public static final String SEAM23_NAME="Seam2.3"; public static final String SEAM22_NAME="Seam2.2"; public static final String SEAM21_NAME="Seam2.1"; @BeforeClass public static void setup() { WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog(); preferenceDialog.open(); SeamPreferencePage sp = new SeamPreferencePage(); preferenceDialog.select(sp); sp.addRuntime(SEAM23_NAME, SEAM_2_3, "2.3"); sp.addRuntime(SEAM22_NAME, SEAM_2_2, "2.2"); sp.addRuntime(SEAM21_NAME, SEAM_2_1, "2.1"); preferenceDialog.ok(); DriverTemplate dt = new DriverTemplate("HSQLDB JDBC Driver", "1.8"); DriverDefinition dd = new DriverDefinition(); dd.setDriverName("HSQLDB JDBC Database"); dd.setDriverTemplate(dt); dd.setDriverLibrary(HSQLDB_DRIVER_LOCATION); preferenceDialog.open(); DriverDefinitionPreferencePage dpref = new DriverDefinitionPreferencePage(); preferenceDialog.select(dpref); DriverDefinitionWizard ddw = dpref.addDriverDefinition(); ddw.create(dd); preferenceDialog.ok(); ConnectionProfileWizard cw = new ConnectionProfileWizard(); cw.open(); new DefaultTable().select("HSQLDB"); new NextButton().click(); cw.finish(); } @Test public void createSeam23WebProjectTest(){ createSeamProject(SEAM_WEB_PROJECT+"23", SEAM_2_3_NAME, "2.3", false); new WaitWhile(new ProjectHasErrors(SEAM_WEB_PROJECT+"23", null), TimePeriod.LONG); deleteProjects(true); } @Test public void createSeam23EarProjectTest(){ createSeamProject(SEAM_EAR_PROJECT+"23", SEAM_2_3_NAME, "2.3", true); new WaitWhile(new ProjectHasErrors(SEAM_EAR_PROJECT+"23", null), TimePeriod.LONG); deleteProjects(true); } @Test public void createSeam22WebProjectTest(){ createSeamProject(SEAM_WEB_PROJECT+"22", SEAM_2_2_NAME, "2.2",false); new WaitWhile(new ProjectHasErrors(SEAM_WEB_PROJECT+"22", ACCEPTED_ERROR_TYPE), TimePeriod.LONG); deleteProjects(true); } @Test public void createSeam22EarProjectTest(){ createSeamProject(SEAM_EAR_PROJECT+"22", SEAM_2_2_NAME, "2.2",true); new WaitWhile(new ProjectHasErrors(SEAM_EAR_PROJECT+"22", ACCEPTED_ERROR_TYPE), TimePeriod.LONG); deleteProjects(true); } private void createSeamProject(String projectName, String seamRuntime, String seamVersion, boolean EAR){ SeamProjectDialog sd = new SeamProjectDialog(); sd.open(); SeamProjectFirstPage sf = new SeamProjectFirstPage(); sf.setProjectName(projectName); sf.setRuntime(sr.getRuntimeNameLabelText(sr.getConfig())); //sf.setServer(serverName); sf.activateFacet("Seam", seamVersion); sf.activateFacet("JBoss Maven Integration", null); SeamProjectFifthPage sfp = new SeamProjectFifthPage(); sfp.setSeamRuntime(seamRuntime); sfp.toggleEAR(EAR); sfp.setConnectionProfile("New HSQLDB"); sd.finish(); } }