package org.jboss.tools.cdi.bot.test.beans.named.teplate; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.swt.impl.menu.ShellMenu; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.workbench.impl.editor.DefaultEditor; import org.jboss.reddeer.workbench.impl.editor.TextEditor; import org.jboss.tools.cdi.bot.test.CDITestBase; import org.jboss.tools.cdi.reddeer.CDIConstants; import org.jboss.tools.cdi.reddeer.cdi.ui.wizard.OpenCDINamedBeanDialog; import org.jboss.tools.cdi.reddeer.condition.NamedDialogHasMatchingItems; import org.jboss.tools.cdi.reddeer.uiutils.EditorResourceHelper; import org.jboss.tools.common.reddeer.label.IDELabel; import org.junit.Before; import org.junit.Test; //TODO ////http://stackoverflow.com/questions/19414709/cant-find-named-cdi-bean-with-default-name-in-el-facelet public abstract class NamedComponentsSearchingTemplate extends CDITestBase{ private static final String beanName = "Bean1"; private static final String stereotypeName = "Stereotype1"; private OpenCDINamedBeanDialog namedDialog = null; private static final String BEAN_STEREOTYPE_PATH = "resources/named/BeanWithStereotype.java.cdi"; private static final String BEAN_STEREOTYPE_NAMED_PATH = "resources/named/BeanWithStereotypeAndNamed.java.cdi"; @Before public void waitForJobs() { ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(getProjectName()).refresh(); if(pe.getProject(getProjectName()). containsItem(CDIConstants.JAVA_RESOURCES,CDIConstants.SRC,getPackageName())){ new EditorResourceHelper().deletePackage(getProjectName(), getPackageName()); } } @Test public void testSearchDefaultNamedBean() { beansHelper.createBean(beanName, getPackageName(), false, false, false, false, false, false,true,null, null); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(beanName); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertTrue(namedDialog.matchingItems().size() == 1); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } @Test public void testSearchBeanWithoutNamed() { beansHelper.createBean(beanName, getPackageName(), false, false, false, false, false, false,false,null, null); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(beanName); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 0)); assertTrue(namedDialog.matchingItems().size() == 0); namedDialog.cancel(); } @Test public void testSearchNamedParameterBean() { String namedParam = "someBean"; beansHelper.createBean(beanName, getPackageName() , false, false, false, false, false, false,true,namedParam, null); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertEquals(1,namedDialog.matchingItems().size()); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } @Test public void testSearchNamedParameterChangeBean() { String namedParam = "someBean"; String changedNamedParam = "someOtherBean"; beansHelper.createBean(beanName, getPackageName(), false, false, false, false, false, false, true, namedParam, null); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertEquals(1, namedDialog.matchingItems().size()); namedDialog.ok(); assertEquals(beanName + ".java", new DefaultEditor().getTitle()); assertEquals(beanName, new TextEditor().getSelectedText()); new EditorResourceHelper().replaceInEditor(beanName + ".java", namedParam, changedNamedParam); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 0)); assertEquals(0, namedDialog.matchingItems().size()); namedDialog.setNamedPrefix(changedNamedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertEquals(1, namedDialog.matchingItems().size()); namedDialog.ok(); assertEquals(beanName + ".java", new DefaultEditor().getTitle()); assertEquals(beanName, new TextEditor().getSelectedText()); } @Test public void testSearchTwoSameNamedBean() { String beanName2 = "Bean2"; String namedParam = "someBean"; beansHelper.createBean(beanName, getPackageName(), false, false, false, false, false, false, true, namedParam, null); beansHelper.createBean(beanName2, getPackageName(), false, false, false, false, false, false, true, namedParam, null); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(namedParam); List<String> matchingItems = namedDialog.matchingItems(); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 2)); assertTrue(matchingItems.size() == 2); for (String matchingItem : matchingItems) { if (matchingItem.contains(beanName)) { namedDialog.setMatchingItems(matchingItem); break; } } namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } @Test public void testSearchBeansWithSamePrefixNamedParam() { String[] beansNames = {"SomeBean", "SomeBean1", "SomeBean2", "SomeBean22", "SomeOtherBean"}; Map<String, Integer> prefixesWithCount = new LinkedHashMap<String, Integer>(); prefixesWithCount.put(beansNames[0], 4); prefixesWithCount.put(beansNames[1], 1); prefixesWithCount.put(beansNames[2], 2); prefixesWithCount.put(beansNames[3], 1); prefixesWithCount.put("Some", 5); for (String beanName : beansNames) { beansHelper.createBean(beanName, getPackageName(), false, false, false, false, false, false, true, null, null); } for (String prefix : prefixesWithCount.keySet()) { namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(prefix); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, prefixesWithCount.get(prefix))); assertTrue("Prefix "+prefix+" has " +namedDialog.matchingItems().size()+" matching items but expected is "+prefixesWithCount.get(prefix), namedDialog.matchingItems().size() == prefixesWithCount.get(prefix)); namedDialog.cancel(); } } @Test public void testSearchBeanWithStereotype() { beansHelper.createStereotype(stereotypeName, getPackageName(), false, true, false, false, false); beansHelper.createBean(beanName, getPackageName(),false,false, false,false,false,false,false,null,null); editResourceUtil.replaceClassContentByResource(beanName+".java", readFile(BEAN_STEREOTYPE_PATH), false); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(beanName); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertTrue(namedDialog.matchingItems().size() == 1); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } @Test public void testSearchBeanWithStereotypeAndNamedParam() { String namedParam = "someBean"; beansHelper.createStereotype(stereotypeName, getPackageName(), false, true, false, false, false); beansHelper.createBean(beanName, getPackageName(),false,false, false,false,false,false,false,null,null); editResourceUtil.replaceClassContentByResource(beanName+".java", readFile(BEAN_STEREOTYPE_NAMED_PATH), false); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(beanName); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 0)); assertTrue(namedDialog.matchingItems().size() == 0); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertTrue(namedDialog.matchingItems().size() == 1); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } @Test public void testSearchBeanWithStereotypeWithNamedParamChange() { String namedParam = "someBean"; String changedNamedParam = "someOtherBean"; beansHelper.createStereotype(stereotypeName, getPackageName(), false, true, false, false, false); beansHelper.createBean(beanName, getPackageName(),false,false, false,false,false,false,false,null,null); editResourceUtil.replaceClassContentByResource(beanName+".java", readFile(BEAN_STEREOTYPE_NAMED_PATH), false); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(beanName); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 0)); assertEquals(0,namedDialog.matchingItems().size()); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertEquals(1,namedDialog.matchingItems().size()); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); new EditorResourceHelper().replaceInEditor(beanName + ".java",namedParam, changedNamedParam); namedDialog = openSearchNamedDialog(); namedDialog.setNamedPrefix(namedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 0)); assertEquals(0, namedDialog.matchingItems().size()); namedDialog.setNamedPrefix(changedNamedParam); new WaitUntil(new NamedDialogHasMatchingItems(namedDialog, 1)); assertEquals(1, namedDialog.matchingItems().size()); namedDialog.ok(); assertTrue(new DefaultEditor().getTitle().equals(beanName + ".java")); assertTrue(new TextEditor().getSelectedText().equals(beanName)); } private OpenCDINamedBeanDialog openSearchNamedDialog() { AbstractWait.sleep(TimePeriod.SHORT); new ShellMenu(IDELabel.Menu.NAVIGATE, IDELabel.Menu.OPEN_CDI_NAMED_BEAN).select(); new DefaultShell("Open CDI Named Bean"); return new OpenCDINamedBeanDialog(); } }