/*******************************************************************************
* Copyright (c) 2017 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.central.test.ui.reddeer;
import static org.junit.Assert.assertFalse;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.jboss.reddeer.core.handler.ShellHandler;
import org.jboss.reddeer.eclipse.core.resources.Project;
import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer;
import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog;
import org.jboss.reddeer.eclipse.m2e.core.ui.preferences.MavenSettingsPreferencePage;
import org.jboss.reddeer.swt.impl.toolbar.DefaultToolItem;
import org.jboss.reddeer.workbench.impl.editor.DefaultEditor;
import org.jboss.reddeer.workbench.impl.shell.WorkbenchShell;
import org.jboss.tools.central.reddeer.api.ExamplesOperator;
import org.jboss.tools.central.reddeer.projects.ArchetypeProject;
import org.jboss.tools.central.test.ui.reddeer.projects.AngularJSForge;
import org.jboss.tools.central.test.ui.reddeer.projects.HTML5Project;
import org.jboss.tools.central.test.ui.reddeer.projects.JavaEEWebProject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author rhopp
* @contributor jkopriva@redhat.com
*
*/
public class ArchetypesTest {
private static final String CENTRAL_LABEL = "Red Hat Central";
private static final String MAVEN_SETTINGS_PATH = System.getProperty("maven.config.file");
private static Map<org.jboss.tools.central.reddeer.projects.Project, List<String>> projectWarnings = new HashMap<org.jboss.tools.central.reddeer.projects.Project, List<String>>();
@BeforeClass
public static void setup() {
String mvnConfigFileName = new File(MAVEN_SETTINGS_PATH).getAbsolutePath();
WorkbenchPreferenceDialog preferenceDialog = new WorkbenchPreferenceDialog();
preferenceDialog.open();
MavenSettingsPreferencePage prefPage = new MavenSettingsPreferencePage();
preferenceDialog.select(prefPage);
prefPage.setUserSettingsLocation(mvnConfigFileName);
preferenceDialog.ok();
new DefaultToolItem(new WorkbenchShell(), CENTRAL_LABEL).click();
// activate central editor
new DefaultEditor(CENTRAL_LABEL);
}
@After
public void teardown() {
ShellHandler.getInstance().closeAllNonWorbenchShells();
for (Project p : new ProjectExplorer().getProjects()) {
p.delete(true);
}
new DefaultToolItem(new WorkbenchShell(), CENTRAL_LABEL).click();
// activate central editor
new DefaultEditor(CENTRAL_LABEL);
}
@AfterClass
public static void teardownClass() {
StringBuilder sb = new StringBuilder();
boolean fail = false;
for (Entry<org.jboss.tools.central.reddeer.projects.Project, List<String>> projectWarning : projectWarnings
.entrySet()) {
sb.append(projectWarning.getKey().getName() + "\n\r");
if (!projectWarning.getValue().isEmpty()) fail = true;
for (String warning : projectWarning.getValue()) {
sb.append("\t" + warning + "\n\r");
}
}
projectWarnings.clear();
assertFalse(sb.toString(), fail);
}
@Test
public void HTML5ProjectTest() {
ArchetypeProject project = new HTML5Project();
importArchetypeProject(project);
}
@Test
public void AngularJSForgeTest(){
ArchetypeProject project = new AngularJSForge();
importArchetypeProject(project);
}
@Test
public void JavaEEWebProjectTest() {
importArchetypeProject(new JavaEEWebProject(false));
}
@Test
public void JavaEEWebProjectBlankTest() {
importArchetypeProject(new JavaEEWebProject(true));
}
// @Test
// public void HybridMobileTest(){
// try{
// new DefaultHyperlink("Hybrid Mobile Project").activate();
// new WaitUntil(new ShellWithTextIsActive("Information"));
// //HMT is not installed
// new PushButton("No").click();
// }catch(WaitTimeoutExpiredException ex){
// //TODO check whether this is OK.
// new DefaultShell().close();
// }
// }
private void importArchetypeProject(ArchetypeProject project) {
ExamplesOperator.getInstance().importArchetypeProject(project);
projectWarnings.put(project, ExamplesOperator.getInstance().getAllWarnings());
}
}