/*******************************************************************************
* 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.forge.ui.bot.console.test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.eclipse.jface.bindings.keys.ParseException;
import org.eclipse.swt.SWT;
import org.jboss.tools.forge.reddeer.condition.ForgeConsoleHasText;
import org.jboss.tools.forge.ui.bot.test.suite.ForgeConsoleTestBase;
import org.junit.Test;
import org.jboss.reddeer.eclipse.core.resources.Project;
import org.jboss.reddeer.eclipse.core.resources.ProjectItem;
import org.jboss.reddeer.requirements.cleanworkspace.CleanWorkspaceRequirement.CleanWorkspace;
import org.jboss.reddeer.swt.impl.menu.ContextMenu;
import org.jboss.reddeer.swt.keyboard.KeyboardFactory;
import org.jboss.reddeer.common.wait.TimePeriod;
import org.jboss.reddeer.common.wait.WaitUntil;
import org.jboss.reddeer.workbench.impl.editor.DefaultEditor;
@CleanWorkspace
public class CommandTest extends ForgeConsoleTestBase {
@Test
public void cdWorkspaceTest(){
createProject();
assertTrue(!pwd().equals(WORKSPACE));
cdWS();
assertTrue(pwd().equals(WORKSPACE));
}
@Test
public void cdHomeTest(){
String userHome = System.getProperty("user.home");
assertTrue(!pwd().equals(userHome));
fView.setConsoleText("cd $\n");
assertTrue(pwd().equals(userHome));
}
@Test
public void pickupDirectoryTest(){
String ASSERT_TEXT = "Picked up type <DirectoryResource>: main";
createProject();
cdWS();
fView.setConsoleText("pick-up " + PROJECT_NAME + "/src/main" + "\n");
new WaitUntil(new ForgeConsoleHasText(ASSERT_TEXT), TimePeriod.VERY_LONG);
assertTrue(fView.getConsoleText().contains(ASSERT_TEXT));
Project project = pExplorer.getProject(PROJECT_NAME);
ProjectItem item = project.getProjectItem("src", "main");
assertTrue(item.isSelected());
}
@Test
public void pickupFileTest(){
String ASSERT_TEXT = "Picked up type <MavenPomResource>: pom.xml";
createProject();
cdWS();
fView.setConsoleText("pick-up " + PROJECT_NAME + "/pom.xml" + "\n");
new WaitUntil(new ForgeConsoleHasText(ASSERT_TEXT), TimePeriod.VERY_LONG);
assertTrue(fView.getConsoleText().contains(ASSERT_TEXT));
DefaultEditor e = new DefaultEditor();
assertTrue("Editor is not active", e.isActive());
assertTrue(e.getTitle().equals(PROJECT_NAME + "/pom.xml"));
e.close();
}
@Test
public void abortCommandTest() throws ParseException{
String ASSERT_TEXT = "***INFO*** Aborted.";
fView.setConsoleText("new-project --named " + PROJECT_NAME + "\n");
KeyboardFactory.getKeyboard().invokeKeyCombination(SWT.CTRL, SWT.SHIFT, 'C');
new WaitUntil(new ForgeConsoleHasText(ASSERT_TEXT), TimePeriod.VERY_LONG);
assertTrue(fView.getConsoleText().contains(ASSERT_TEXT));
assertFalse(pExplorer.containsProject(PROJECT_NAME));
}
@Test
public void showInForgeConsoleTest(){
String ASSERT_TEXT = "Picked up type <DirectoryResource>: " + PROJECT_NAME;
createProject();
cdWS();
Project project = pExplorer.getProject(PROJECT_NAME);
project.select();
new ContextMenu("Show In", "Forge Console").select();
new WaitUntil(new ForgeConsoleHasText(ASSERT_TEXT), TimePeriod.VERY_LONG);
assertTrue(fView.getConsoleText().contains(ASSERT_TEXT));
}
}