/*******************************************************************************
* Copyright (c) 2010-2012 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.beans.dialog.template;
import static org.junit.Assert.*;
import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer;
import org.jboss.reddeer.jface.text.contentassist.ContentAssistant;
import org.jboss.reddeer.workbench.impl.editor.TextEditor;
import org.jboss.tools.cdi.reddeer.CDIConstants;
import org.jboss.tools.cdi.bot.test.CDITestBase;
import org.jboss.tools.cdi.reddeer.cdi.text.ext.hyperlink.AssignableBeansDialog;
import org.jboss.tools.cdi.reddeer.common.model.ui.editor.EditorPartWrapper;
import org.junit.Before;
import org.junit.Test;
public class AllAssignableDialogTemplate extends CDITestBase {
private String appClass = "App.java";
@Before
public void prepareClasses(){
ProjectExplorer pe = new ProjectExplorer();
pe.open();
if(!pe.getProject(PROJECT_NAME).containsItem("Java Resources","src",getPackageName())){
createWithContent("AbstractManager");
createWithContent("App");
createWithContent("Basic");
createWithContent("BasicManager");
createWithContent("D1");
createWithContent("I1");
createWithContent("IBinding");
createWithContent("IManager");
createWithContent("Manager");
createWithContent("Manager1");
createWithContent("Manager2");
createWithContent("Manager3");
EditorPartWrapper b = beansXMLHelper.openBeansXml(PROJECT_NAME);
b.addClasses("cdi.Manager1");
b.save();
}
}
private static void createWithContent(String name){
beansHelper.createClass(name, PACKAGE_NAME);
editResourceUtil.replaceClassContentByResource(name+".java",
readFile("resources/classes/AssignableDialog/"+name+".java"), true);
}
@Test
public void testDecorator() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("manager");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 6);
assertTrue(assignDialog.getAllBeans().contains(
"@Decorator D1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.hideDecorators();
assertTrue(assignDialog.getAllBeans().size() == 5);
assertFalse(assignDialog.getAllBeans().contains(
"@Decorator D1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.close();
}
@Test
public void testInterceptor() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES,CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("manager");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 6);
assertTrue(assignDialog.getAllBeans().contains(
"@Interceptor I1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.hideInterceptors();
assertTrue(assignDialog.getAllBeans().size() == 5);
assertFalse(assignDialog.getAllBeans().contains(
"@Interceptor I1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.close();
}
@Test
public void testUnselectedAlternative() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("manager");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 6);
assertTrue(assignDialog.getAllBeans().contains(
"@Alternative BasicManager - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.hideUnselectedAlternatives();
assertTrue(assignDialog.getAllBeans().size() == 5);
assertFalse(assignDialog.getAllBeans().contains(
"@Alternative BasicManager - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.close();
}
@Test
public void testUnavailableProducer() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("manager");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 6);
assertTrue(assignDialog.getAllBeans().contains(
"@Produces BasicManager.getManager() - " + getPackageName()
+ " - /" + getProjectName() + "/src"));
assignDialog.hideUnavailableProducers();
assertTrue(assignDialog.getAllBeans().size() == 5);
assertFalse(assignDialog.getAllBeans().contains(
"@Produces BasicManager.getManager() - " + getPackageName()
+ " - /" + getProjectName() + "/src"));
assignDialog.close();
}
@Test
public void testSpecializedBeans() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("manager");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 6);
assertTrue(assignDialog.getAllBeans().contains(
"AbstractManager - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.hideSpecializedBeans();
assertTrue(assignDialog.getAllBeans().size() == 5);
assertFalse(assignDialog.getAllBeans().contains(
"AbstractManager - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assignDialog.close();
}
@Test
public void testAmbiguousBeans() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor editor = new TextEditor(appClass);
editor.selectText("managerImpl");
ContentAssistant ca = editor.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assertTrue(assignDialog.getAllBeans().size() == 3);
assertTrue(assignDialog.getAllBeans().contains(
"@Alternative Manager1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assertTrue(assignDialog.getAllBeans().contains(
"Manager2 - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assertTrue(assignDialog.getAllBeans().contains(
"Manager3 - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assignDialog.hideAmbiguousBeans();
assertTrue(assignDialog.getAllBeans().size() == 1);
assertTrue(assignDialog.getAllBeans().contains(
"@Alternative Manager1 - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
assertFalse(assignDialog.getAllBeans().contains(
"Manager2 - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assertFalse(assignDialog.getAllBeans().contains(
"Manager3 - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assignDialog.close();
}
private void assignDialogShowAll(AssignableBeansDialog assignDialog){
assignDialog.showAmbiguousBeans();
assignDialog.showDecorators();
assignDialog.showInterceptors();
assignDialog.showSpecializedBeans();
assignDialog.showUnavailableBeans();
assignDialog.showUnavailableProducers();
assignDialog.showUnselectedAlternatives();
}
}