/******************************************************************************* * Copyright (c) 2016 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.jsf.ui.test.project; import static org.junit.Assert.fail; import java.util.Arrays; import java.util.Collection; 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.common.exception.WaitTimeoutExpiredException; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.eclipse.core.resources.Project; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.eclipse.wst.server.ui.view.Server; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServerModule; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersView; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersViewEnums.ServerPublishState; import org.jboss.reddeer.eclipse.wst.server.ui.view.ServersViewEnums.ServerState; import org.jboss.reddeer.eclipse.wst.server.ui.wizard.ModifyModulesDialog; import org.jboss.reddeer.eclipse.wst.server.ui.wizard.ModifyModulesPage; import org.jboss.reddeer.junit.internal.runner.ParameterizedRequirementsRunnerFactory; import org.jboss.reddeer.junit.requirement.inject.InjectRequirement; import org.jboss.reddeer.junit.runner.RedDeerSuite; import org.jboss.reddeer.requirements.server.ServerReqState; import org.jboss.tools.jsf.ui.test.requirement.DoNotUseVPERequirement.DoNotUseVPE; import org.jboss.tools.jsf.ui.test.utils.JSFTestUtils; import org.jboss.tools.jsf.ui.test.utils.ModuleIsInState; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameters; import org.junit.runners.Parameterized.UseParametersRunnerFactory; @RunWith(RedDeerSuite.class) @DoNotUseVPE @UseParametersRunnerFactory(ParameterizedRequirementsRunnerFactory.class) @JBossServer(type = ServerReqType.EAP7x, state = ServerReqState.RUNNING) public class RunJSFProjectTest { protected static final String PROJECT_NAME_BASE = "JSFTestProject"; private String jsfEnvironment; private String template; private String projectName; @InjectRequirement ServerRequirement serverReq; @Parameters(name = "{0} {1}") public static Collection<String[]> data() { return Arrays.asList( new String[][] {{"JSF 1.2", "JSFKickStartWithoutLibs"}, {"JSF 2.2", "JSFKickStartWithoutLibs"}, {"JSF 1.2 with Facelets", "FaceletsKickStartWithoutLibs"}}); } public RunJSFProjectTest(String jsfEnvironment, String template) { this.jsfEnvironment = jsfEnvironment; this.template = template; this.projectName = (PROJECT_NAME_BASE + jsfEnvironment).replaceAll("\\s", ""); } @Before public void setup() { JSFTestUtils.createJSFProject(projectName, jsfEnvironment, template, false); } @After public void teardown() { ProjectExplorer projectExplorer = new ProjectExplorer(); projectExplorer.open(); Project project = projectExplorer.getProject(projectName); project.delete(true); JSFTestUtils.checkErrorLog(); } @Test public void deployProjectTest() { deployProject(); checkDeployedProject(); } private void checkDeployedProject() { Server server = getServer(); ServerModule module = server.getModule(projectName); ModuleIsInState moduleIsInStateCondition = new ModuleIsInState(ServerState.STARTED, ServerPublishState.SYNCHRONIZED, module); try { new WaitUntil(moduleIsInStateCondition, TimePeriod.NORMAL); } catch (WaitTimeoutExpiredException ex) { fail("Module is not in state STARTED, SYNCHRONIZED"); } } private void deployProject() { Server server = getServer(); ModifyModulesDialog addAndRemoveModulesDialog = server.addAndRemoveModules(); ModifyModulesPage modifyModulesPage = new ModifyModulesPage(); modifyModulesPage.add(projectName); addAndRemoveModulesDialog.finish(); } private Server getServer() { ServersView serversView = new ServersView(); return serversView.getServer(serverReq.getServerNameLabelText(serverReq.getConfig())); } }