/*******************************************************************************
* Copyright (c) 2011 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.ui.test.wizard;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PlatformUI;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.ui.wizard.OpenCDINamedBeanDialog;
import org.jboss.tools.cdi.ui.wizard.OpenCDINamedBeanDialog.CDINamedBeanWrapper;
import org.jboss.tools.test.util.JobUtils;
/**
* JUnit Test case due to test JBIDE-7892 issue.
*
* @author Victor V. Rubezhny
*
*/
public class OpenCDINamedBeanDialogTest extends TCKTest {
public void testCDINamedBeanDialogSearch() throws CoreException {
find("spi", "SpiderSize", "OtherSpiderProducer.java", true);
find("alk", "alkalineBatarry", "BatarryBeanProducer.java", true);
find("lady", "ladybirdSpider", "SpiderProducer.java", true);
}
public void testCDINamedBeanDialogSearchShortHand() throws CoreException {
find("s*ze", "SpiderSize", "OtherSpiderProducer.java", true);
find("*dSp*r", "ladybirdSpider", "SpiderProducer.java", true);
find("foo?", "foo3", "TestNamed.java", true);
}
private void find(String pattern, String beanName, String editorName, boolean wait) throws CoreException{
OpenCDINamedBeanDialog dialog = new OpenCDINamedBeanDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), true);
dialog.setBlockOnOpen(false);
dialog.setInitialPattern(pattern);
dialog.open();
IBean bean = null;
try {
dialog.startSearch();
if(wait){
JobUtils.waitForIdle();
JobUtils.delay(2000);
}
dialog.stopSearchAndShowResults();
Object[] objects = dialog.getResult();
assertNotNull("Search dialog returned null when searching for " + pattern, objects);
assertTrue("Component "+beanName+" not found", objects.length != 0);
StringBuilder sb = new StringBuilder();
for (Object o: objects) {
CDINamedBeanWrapper wrapper = (CDINamedBeanWrapper)o;
assertNotNull(wrapper.getBean());
String foundName = wrapper.getBeanName();
if(sb.length()>0) {
sb.append(", ");
}
sb.append(foundName);
if(beanName.equals(foundName)) {
bean = wrapper.getBean();
break;
}
}
assertNotNull("Bean "+beanName+" not found with " + pattern + ". Found beans: {" + sb.toString() + "}", bean);
} finally {
dialog.okPressed();
dialog.close();
}
bean.open();
IEditorPart resultEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
assertTrue("Unexpected editor is opened for CDI Named Bean '" + bean.getName() + "': " + resultEditor.getTitle(), editorName.equals(resultEditor.getTitle()));
}
private IBean findNamedBean(Object[] objects, String beanName) {
for (Object o: objects) {
CDINamedBeanWrapper wrapper = (CDINamedBeanWrapper)o;
assertNotNull(wrapper.getBean());
if(beanName.equals(wrapper.getBeanName())) {
return wrapper.getBean();
}
}
return null;
}
}