package org.jboss.tools.cdi.bot.test.beansxml.template; import static org.junit.Assert.*; import java.util.List; import org.jboss.reddeer.common.exception.WaitTimeoutExpiredException; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardDialog; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardPage; import org.jboss.reddeer.eclipse.jdt.ui.ProjectExplorer; import org.jboss.reddeer.workbench.condition.EditorHasValidationMarkers; import org.jboss.reddeer.workbench.impl.editor.Marker; 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.common.model.ui.editor.EditorPartWrapper; import org.junit.After; import org.junit.Before; import org.junit.Test; public class BeansXMLDiscoveryModesTemplate extends CDITestBase{ @Before public void addBeans(){ createClass(PROJECT_NAME, "Bean1"); createClass(PROJECT_NAME, "Bean2"); ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(PROJECT_NAME).getProjectItem(CDIConstants.JAVA_RESOURCES,CDIConstants.SRC,"test","Bean1.java").open(); TextEditor ed = new TextEditor("Bean1.java"); ed.insertLine(1, "import javax.inject.Inject;"); ed.insertLine(4, "@Inject"); ed.insertLine(5, "Bean2 bean2;"); ed.save(); } @After public void clean(){ deleteAllProjects(); } @Test public void testModeAll(){ setMode("all"); TextEditor ed = new TextEditor("Bean1.java"); try{ new WaitWhile(new EditorHasValidationMarkers(ed)); } catch (WaitTimeoutExpiredException ex){ fail("this is known issue JBIDE-18964"); } List<Marker> markers = ed.getMarkers(); assertEquals(0,markers.size()); } @Test public void testModeAnnotated(){ setMode("annotated"); TextEditor ed = new TextEditor("Bean1.java"); List<Marker> markers = ed.getMarkers(); assertEquals(0,markers.size()); ed.insertLine(1, "import javax.enterprise.context.ApplicationScoped;"); ed.insertLine(3, "@ApplicationScoped"); new WaitUntil(new EditorHasValidationMarkers(ed, 7)); markers = ed.getMarkers(); assertEquals(1,markers.size()); assertEquals("No bean is eligible for injection to the injection point [JSR-346 §5.2.2]",markers.get(0).getText()); assertEquals(7,markers.get(0).getLineNumber()); ed = new TextEditor("Bean2.java"); ed.insertLine(1, "import javax.enterprise.context.ApplicationScoped;"); ed.insertLine(2, "@ApplicationScoped"); ed.save(); ed = new TextEditor("Bean1.java"); ed.save(); new WaitWhile(new EditorHasValidationMarkers(ed),TimePeriod.NORMAL, false); markers = ed.getMarkers(); try{ assertEquals(0,markers.size()); } catch (AssertionError ex){ fail("this is known issue JBIDE-18964"); } } @Test public void testModeNone(){ setMode("none"); TextEditor ed = new TextEditor("Bean1.java"); new WaitWhile(new EditorHasValidationMarkers(ed),TimePeriod.NORMAL, false); List<Marker> markers = ed.getMarkers(); assertEquals(0,markers.size()); } @Test public void testWithoutBeansXml(){ ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.getProject(PROJECT_NAME).getProjectItem("WebContent","WEB-INF","beans.xml").delete(); TextEditor ed = new TextEditor("Bean1.java"); new WaitUntil(new EditorHasValidationMarkers(ed),TimePeriod.NORMAL, false); List<Marker> markers = ed.getMarkers(); assertEquals(0,markers.size()); ed.insertLine(1, "import javax.enterprise.context.ApplicationScoped;"); ed.insertLine(3, "@ApplicationScoped"); new WaitUntil(new EditorHasValidationMarkers(ed,7)); markers = ed.getMarkers(); assertEquals(1,markers.size()); assertEquals("No bean is eligible for injection to the injection point [JSR-346 §5.2.2]",markers.get(0).getText()); assertEquals(7,markers.get(0).getLineNumber()); ed = new TextEditor("Bean2.java"); ed.insertLine(1, "import javax.enterprise.context.ApplicationScoped;"); ed.insertLine(3, "@ApplicationScoped"); ed.save(); ed = new TextEditor("Bean1.java"); ed.save(); new WaitWhile(new EditorHasValidationMarkers(ed),TimePeriod.NORMAL, false); markers = ed.getMarkers(); assertEquals(0,markers.size()); } private void setMode(String mode){ EditorPartWrapper beans = beansXMLHelper.openBeansXml(PROJECT_NAME); beans.activateTreePage(); beans.setBeanDiscoveryMode(mode); beans.save(); } private void createClass(String project, String className){ ProjectExplorer pe = new ProjectExplorer(); pe.open(); pe.selectProjects(project); NewJavaClassWizardDialog c = new NewJavaClassWizardDialog(); c.open(); NewJavaClassWizardPage page = new NewJavaClassWizardPage(); page.setPackage("test"); page.setName(className); c.finish(); } }