/*******************************************************************************
* 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.junit.After;
import org.junit.Before;
import org.junit.Test;
public class AssignableDialogFilterTemplate extends CDITestBase {
private String appClass = "App.java";
@Before
public void prepareClasses(){
createWithContent("Animal");
createWithContent("AnimalDecorator");
createWithContent("App");
createWithContent("Cat");
createWithContent("Dog");
}
@After
public void deleteAll(){
deleteAllProjects();
}
private void createWithContent(String name){
beansHelper.createClass(name, getPackageName());
editResourceUtil.replaceClassContentByResource(name+".java",
readFile("resources/classes/AssignableDialogFilter/"+name+".java"), true);
}
@Test
public void testFilterAssignableBeans() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor ed = new TextEditor(appClass);
ed.selectText("animal");
ContentAssistant ca = ed.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
/** test lower and upper case */
assignDialog.typeInFilter("cat");
assertEquals(1, assignDialog.getAllBeans().size());
assertTrue(assignDialog
.getAllBeans()
.get(0)
.equals("Cat - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assignDialog.typeInFilter("CAT");
assertTrue(assignDialog.getAllBeans().size() == 1);
assertTrue(assignDialog
.getAllBeans()
.get(0)
.equals("Cat - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
/** test '*' asterisk */
assignDialog.typeInFilter("*at");
assertTrue(assignDialog.getAllBeans().size() == 2);
assertTrue(assignDialog.getAllBeans().contains(
"Cat - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assertTrue(assignDialog.getAllBeans().contains(
"@Decorator AnimalDecorator - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
/** test '?' asterisk */
assignDialog.typeInFilter("??g");
assertTrue(assignDialog.getAllBeans().size() == 1);
assertTrue(assignDialog
.getAllBeans()
.get(0)
.equals("Dog - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
/** test non-existing bean */
assignDialog.typeInFilter("?*?s");
assertTrue(assignDialog.getAllBeans().size() == 0);
assignDialog.close();
}
@Test
public void testFilterNonAssignableBeans() {
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(getProjectName()).getProjectItem(CDIConstants.JAVA_RESOURCES, CDIConstants.SRC,
getPackageName(), appClass).open();
TextEditor ed = new TextEditor(appClass);
ed.selectText("animal");
ContentAssistant ca = ed.openOpenOnAssistant();
ca.chooseProposal(CDIConstants.SHOW_ALL_ASSIGNABLE);
AssignableBeansDialog assignDialog = new AssignableBeansDialog();
assignDialogShowAll(assignDialog);
assignDialog.hideDecorators();
/** test lower and upper case */
assignDialog.typeInFilter("animaldecorator");
assertTrue(assignDialog.getAllBeans().size() == 0);
assignDialog.typeInFilter("ANIMALDECORATOR");
assertTrue(assignDialog.getAllBeans().size() == 0);
/** test '*' asterisk */
assignDialog.typeInFilter("*at");
assertTrue(assignDialog.getAllBeans().size() == 1);
assertTrue(assignDialog.getAllBeans().contains(
"Cat - " + getPackageName() + " - /" + getProjectName()
+ "/src"));
assertFalse(assignDialog.getAllBeans().contains(
"@Decorator AnimalDecorator - " + getPackageName() + " - /"
+ getProjectName() + "/src"));
/** test '?' asterisk */
assignDialog.typeInFilter("??i");
assertTrue(assignDialog.getAllBeans().size() == 0);
assignDialog.close();
}
private void assignDialogShowAll(AssignableBeansDialog assignDialog){
assignDialog.showAmbiguousBeans();
assignDialog.showDecorators();
assignDialog.showInterceptors();
assignDialog.showSpecializedBeans();
assignDialog.showUnavailableBeans();
assignDialog.showUnavailableProducers();
assignDialog.showUnselectedAlternatives();
}
}