Author: jjankovi
Date: 2011-11-30 05:36:38 -0500 (Wed, 30 Nov 2011)
New Revision: 36770
Added:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/AnnotationException.java
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/CollectionsUtil.java
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/wizards/CDIRefactorWizard.java
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/CDIAllBotTests.java
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/JSFTestBase.java
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/NamedRefactoringTest.java
Log:
CDI named annotation refactoring test added
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/CDIAllBotTests.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/CDIAllBotTests.java 2011-11-30
10:11:11 UTC (rev 36769)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/CDIAllBotTests.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -10,23 +10,8 @@
******************************************************************************/
package org.jboss.tools.cdi.bot.test;
-import org.jboss.tools.cdi.bot.test.beansxml.BeansXMLCompletionTest;
-import org.jboss.tools.cdi.bot.test.beansxml.BeansXMLValidationTest;
-import org.jboss.tools.cdi.bot.test.editor.BeansEditorTest;
-import org.jboss.tools.cdi.bot.test.openon.FindObserverForEventTest;
-import org.jboss.tools.cdi.bot.test.openon.OpenOnTest;
-import org.jboss.tools.cdi.bot.test.quickfix.BeanValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.DecoratorValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.IBindingValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.InterceptorValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.QualifierValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.ScopeValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.quickfix.StereotypeValidationQuickFixTest;
-import org.jboss.tools.cdi.bot.test.seam3.Seam3Test;
+import org.jboss.tools.cdi.bot.test.jsf.NamedRefactoringTest;
import org.jboss.tools.cdi.bot.test.uiutils.SWTEclipseCDIExtUtil;
-import org.jboss.tools.cdi.bot.test.wizard.ConfigurationPresetTest;
-import org.jboss.tools.cdi.bot.test.wizard.FacetTest;
-import org.jboss.tools.cdi.bot.test.wizard.WizardTest;
import org.jboss.tools.ui.bot.ext.RequirementAwareSuite;
import org.jboss.tools.ui.bot.ext.types.ViewType;
import org.junit.BeforeClass;
@@ -49,7 +34,7 @@
* JAVA=1.6,/space/java/sdk/jdk1.6.0_22
*
*
- * Suite duration: aprox. 24min
+ * Suite duration: aprox. 25min
*
* @author Lukas Jungmann
* @author Jaroslav Jankovic
@@ -57,23 +42,23 @@
@RunWith(RequirementAwareSuite.class)
@SuiteClasses({
// PerspectiveTest.class,
- ConfigurationPresetTest.class,
- FacetTest.class,
- WizardTest.class,
- BeansEditorTest.class,
-// NamedRefactoringTest.class,
- BeansXMLValidationTest.class,
- BeansXMLCompletionTest.class,
- StereotypeValidationQuickFixTest.class,
- QualifierValidationQuickFixTest.class,
- ScopeValidationQuickFixTest.class,
- BeanValidationQuickFixTest.class,
- InterceptorValidationQuickFixTest.class,
- DecoratorValidationQuickFixTest.class,
- IBindingValidationQuickFixTest.class,
- OpenOnTest.class,
- FindObserverForEventTest.class,
- Seam3Test.class
+// ConfigurationPresetTest.class,
+// FacetTest.class,
+// WizardTest.class,
+// BeansEditorTest.class,
+ NamedRefactoringTest.class,
+// BeansXMLValidationTest.class,
+// BeansXMLCompletionTest.class,
+// StereotypeValidationQuickFixTest.class,
+// QualifierValidationQuickFixTest.class,
+// ScopeValidationQuickFixTest.class,
+// BeanValidationQuickFixTest.class,
+// InterceptorValidationQuickFixTest.class,
+// DecoratorValidationQuickFixTest.class,
+// IBindingValidationQuickFixTest.class,
+// OpenOnTest.class,
+// FindObserverForEventTest.class,
+// Seam3Test.class
})
public class CDIAllBotTests extends CDITestBase {
Added:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/AnnotationException.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/AnnotationException.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/AnnotationException.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -0,0 +1,16 @@
+package org.jboss.tools.cdi.bot.test.jsf;
+
+public class AnnotationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public AnnotationException() {
+
+ }
+
+ public AnnotationException(String msg) {
+ super(msg);
+
+ }
+
+}
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/JSFTestBase.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/JSFTestBase.java 2011-11-30
10:11:11 UTC (rev 36769)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/JSFTestBase.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -11,6 +11,8 @@
package org.jboss.tools.cdi.bot.test.jsf;
+import java.util.ArrayList;
+import java.util.List;
import java.util.logging.Logger;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
@@ -19,9 +21,12 @@
import org.jboss.tools.cdi.bot.test.annotations.JSFTemplate;
import org.jboss.tools.cdi.bot.test.uiutils.actions.NewJSFProjectWizard;
import org.jboss.tools.cdi.bot.test.uiutils.actions.NewXHTMLFileWizard;
+import org.jboss.tools.cdi.bot.test.uiutils.wizards.CDIRefactorWizard;
import org.jboss.tools.cdi.bot.test.uiutils.wizards.XHTMLDialogWizard;
import org.jboss.tools.ui.bot.ext.SWTJBTExt;
import org.jboss.tools.ui.bot.ext.Timing;
+import org.jboss.tools.ui.bot.ext.helper.ContextMenuHelper;
+import org.jboss.tools.ui.bot.ext.types.IDELabel;
import org.junit.Before;
public class JSFTestBase extends CDITestBase {
@@ -49,6 +54,10 @@
}
+ /**
+ *
+ * @param pageName
+ */
protected void createXHTMLPage(String pageName) {
XHTMLDialogWizard xhtmlWizard = new NewXHTMLFileWizard().run();
xhtmlWizard.setName(pageName).finish();
@@ -57,19 +66,109 @@
setEd(bot.activeEditor().toTextEditor());
}
- protected void contextMenuForTextInEditor(final String text,
+ /**
+ *
+ * @param className
+ * @throws AnnotationException
+ */
+ protected void openContextMenuForCDIRefactor(String className) throws
AnnotationException {
+ String text = getNamedAnnotationForClass(className);
+ if (text == null) {
+ throw new AnnotationException("There is no Named " +
+ "annotation in class:" + className);
+ }
+ String renameContextMenuText = "Rename '" +
+ parseNamedAnnotation(className, text) +
+ "' Named Bean ";
+ openContextMenuForTextInEditor(text,
+ IDELabel.Menu.CDI_REFACTOR, renameContextMenuText);
+ bot.sleep(Timing.time3S());
+ }
+
+ /**
+ *
+ * @param className
+ * @return
+ */
+ private String getNamedAnnotationForClass(String className) {
+ try {
+ bot.editorByTitle(className + ".java");
+ } catch (WidgetNotFoundException exc) {
+ projectExplorer.openFile(getProjectName(), "Java Resources",
"JavaSource",
+ getPackageName(), className);
+ }
+
+ setEd(bot.activeEditor().toTextEditor());
+ for (String line : getEd().getLines()) {
+ if (line.contains("@Named") &&
+ !line.contains("//") && !line.contains("*")) {
+ return line;
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @param className
+ * @param text
+ * @return
+ */
+ private String parseNamedAnnotation(String className, String text) {
+ if (!text.contains("\"")) {
+ return className.substring(0,1).toLowerCase() + className.substring(1);
+ } else {
+ return text.split("\"")[1];
+ }
+
+ }
+
+ /**
+ *
+ * @param text
+ * @param menu
+ */
+ protected void openContextMenuForTextInEditor(final String text,
final String... menu) {
assert menu.length > 0;
SWTJBTExt.selectTextInSourcePane(bot, getEd().getTitle(),
text, 0, text.length());
- bot.sleep(Timing.time2S());
+
+ ContextMenuHelper.clickContextMenu(getEd(), menu);
- getEd().toTextEditor().contextMenu(menu[0]);
- bot.sleep(Timing.time3S());
- util.waitForNonIgnoredJobs();
-
}
-
+
+ /**
+ *
+ * @param className
+ * @param newNamed
+ * @return
+ */
+ protected List<String> changeNamedAnnotation(String className, String newNamed) {
+ List<String> affectedFiles = new ArrayList<String>();
+ try {
+ openContextMenuForCDIRefactor(className);
+
+ CDIRefactorWizard cdiRefactorWizard = new CDIRefactorWizard();
+ cdiRefactorWizard = cdiRefactorWizard.setName(newNamed);
+ cdiRefactorWizard = cdiRefactorWizard.next();
+ affectedFiles = cdiRefactorWizard.getAffectedFiles();
+ cdiRefactorWizard.finish();
+ } catch (AnnotationException exc) {
+ LOGGER.info("There is no named annotation in tested class");
+ fail(exc.getMessage());
+ } catch (WidgetNotFoundException exc) {
+ bot.activeShell().bot().button("Close").click();
+ }
+ return affectedFiles;
+ }
+
+ /**
+ *
+ * @param projectName
+ * @param env
+ * @param template
+ */
private void createJSFProjectWithCDISupport(String projectName, JSFEnvironment env,
JSFTemplate template) {
@@ -78,6 +177,12 @@
}
+ /**
+ *
+ * @param projectName
+ * @param env
+ * @param template
+ */
private void createJSFProject(String projectName, JSFEnvironment env,
JSFTemplate template) {
new NewJSFProjectWizard().run().
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/NamedRefactoringTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/NamedRefactoringTest.java 2011-11-30
10:11:11 UTC (rev 36769)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/jsf/NamedRefactoringTest.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -11,8 +11,12 @@
package org.jboss.tools.cdi.bot.test.jsf;
+import java.util.Arrays;
+import java.util.Collection;
+
import org.jboss.tools.cdi.bot.test.CDIAllBotTests;
import org.jboss.tools.cdi.bot.test.annotations.CDIWizardType;
+import org.jboss.tools.cdi.bot.test.uiutils.CollectionsUtil;
import org.jboss.tools.ui.bot.ext.RequirementAwareSuite;
import org.jboss.tools.ui.bot.ext.config.Annotations.Require;
import org.jboss.tools.ui.bot.ext.config.Annotations.Server;
@@ -27,14 +31,16 @@
* @author Jaroslav Jankovic
*
*/
-
@Require(clearProjects = true, perspective = "Java EE",
- server = @Server(state = ServerState.NotRunning,
- version = "6.0", operator = ">="))
+ server = @Server(state = ServerState.NotRunning,
+ version = "6.0", operator = ">="))
@RunWith(RequirementAwareSuite.class)
@SuiteClasses({ CDIAllBotTests.class })
public class NamedRefactoringTest extends JSFTestBase {
+ private static final String MANAGED_BEAN = "ManagedBean";
+ private static final String INDEX_XHTML= "index.xhtml";
+
@Override
public String getProjectName() {
return "CDIRefactoring";
@@ -43,7 +49,7 @@
@Test
public void testNamedAnnotationRefactor() {
- wizard.createCDIComponent(CDIWizardType.BEAN, "ManagedBean",
getPackageName(), null);
+ wizard.createCDIComponent(CDIWizardType.BEAN, MANAGED_BEAN, getPackageName(), null);
editResourceUtil.replaceClassContentByResource(NamedRefactoringTest.class.
getResourceAsStream("/resources/jsf/ManagedBean.java.cdi"), false);
@@ -51,10 +57,30 @@
editResourceUtil.replaceClassContentByResource(NamedRefactoringTest.class.
getResourceAsStream("/resources/jsf/index.xhtml.cdi"), false);
- bot.editorByTitle("ManagedBean.java").show();
+ bot.editorByTitle(MANAGED_BEAN + ".java").show();
setEd(bot.activeEditor().toTextEditor());
- contextMenuForTextInEditor("@Named(\"bean\")", "Open
With", "Other...");
+
+ String newNamed = "bean2";
+ Collection<String> affectedFiles = changeNamedAnnotation(MANAGED_BEAN,
newNamed);
+ Collection<String> expectedAffectedFiles = Arrays.asList(
+ MANAGED_BEAN + ".java", INDEX_XHTML);
+
+ for (String affectedFile : affectedFiles) {
+ bot.editorByTitle(affectedFile).save();
+ }
+
+ assertEquals(expectedAffectedFiles.size(), affectedFiles.size());
+ assertTrue(CollectionsUtil.compareTwoCollectionsEquality(
+ expectedAffectedFiles, affectedFiles));
+ assertTrue(bot.editorByTitle(MANAGED_BEAN +
".java").toTextEditor().getText().
+ contains("@Named(\"" + newNamed + "\""));
+
+ assertTrue(bot.editorByTitle(INDEX_XHTML).toTextEditor().getText().
+ contains("#{" + newNamed + ".submit()}"));
+
}
+
+
}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/CollectionsUtil.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/CollectionsUtil.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/CollectionsUtil.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2010 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.cdi.bot.test.uiutils;
+
+import java.util.Collection;
+
+public class CollectionsUtil {
+
+ private CollectionsUtil() {
+ throw new AssertionError();
+ }
+
+ /**
+ *
+ * @param expectedAffectedFiles
+ * @param affectedFiles
+ * @return
+ */
+ public static boolean compareTwoCollectionsEquality(
+ Collection<String> expectedAffectedFiles,
+ Collection<String> affectedFiles) {
+ int counter = 0;
+ for (String f1 : affectedFiles) {
+ for (String f2 : expectedAffectedFiles) {
+ if (f1.equals(f2)) {
+ counter++;
+ }
+ }
+ }
+ return expectedAffectedFiles.size() == counter;
+ }
+
+}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/wizards/CDIRefactorWizard.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/wizards/CDIRefactorWizard.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.bot.test/src/org/jboss/tools/cdi/bot/test/uiutils/wizards/CDIRefactorWizard.java 2011-11-30
10:36:38 UTC (rev 36770)
@@ -0,0 +1,44 @@
+package org.jboss.tools.cdi.bot.test.uiutils.wizards;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+
+public class CDIRefactorWizard extends Wizard{
+
+ private List<String> affectedFiles;
+
+ public CDIRefactorWizard() {
+ super(new SWTBot().activeShell().widget);
+ assert ("Refactoring").equals(getText());
+ affectedFiles = new ArrayList<String>();
+ }
+
+ public CDIRefactorWizard setName(String name) {
+ setText("@Named Bean Name", name);
+ return this;
+ }
+
+ public CDIRefactorWizard next() {
+ clickButton("Next >");
+ return this;
+ }
+
+ /**
+ * Method gets all files which will be affected by CDI refactoring
+ * @return
+ */
+ public List<String> getAffectedFiles() {
+ String temp = null;
+ for (SWTBotTreeItem ti : bot().tree().getTreeItem("Rename @Named
Bean").getItems()) {
+ temp = ti.getText().split("-")[0];
+ affectedFiles.add(temp.substring(0, temp.length() - 1));
+ }
+ return affectedFiles;
+ }
+
+
+
+}