package org.jboss.tools.cdi.bot.test.weld.template;
import static org.junit.Assert.*;
import java.util.List;
import org.jboss.reddeer.common.wait.WaitUntil;
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.DefaultEditor;
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.junit.Before;
import org.junit.Test;
//based on JBIDE-12645
public class WeldBuiltInContextsTemplate extends CDITestBase{
public static final String WELD_API_JAR=System.getProperty("jbosstools.test.weld-api.home");
protected String CDIVersion;
@Before
public void addLibs(){
disableSourceLookup();
ProjectExplorer pe = new ProjectExplorer();
pe.open();
if(pe.getProject(PROJECT_NAME).containsItem("Java Resources","src","test","BuiltInContexts.java")){
return;
}
NewJavaClassWizardDialog jd = new NewJavaClassWizardDialog();
jd.open();
NewJavaClassWizardPage jp = new NewJavaClassWizardPage();
jp.setPackage("test");
jp.setName("BuiltInContexts");
jd.finish();
projectHelper.addLibrariesIntoProject(PROJECT_NAME, WELD_API_JAR);
editResourceUtil.replaceClassContentByResource("BuiltInContexts.java", readFile("resources/cdi11/BuiltInContexts.jav_"), false);
}
@Test
public void testBuildInContextsWarnings(){
TextEditor te = new TextEditor("BuiltInContexts.java");
new WaitUntil(new EditorHasValidationMarkers(te));
List<Marker> markers = te.getMarkers();
assertEquals(3,markers.size());
for(Marker m: te.getMarkers()){
assertEquals("org.eclipse.ui.workbench.texteditor.warning",m.getType());
String JSRspec = "[JSR-346 §5.2.2]";
if("1.0".equals(CDIVersion)){
JSRspec = "[JSR-299 §5.2.1]";
}
assertEquals("Multiple beans are eligible for injection to the injection point "+JSRspec, m.getText());
assertTrue(m.getLineNumber() == 70 || m.getLineNumber() == 73 || m.getLineNumber() == 76);
}
}
@Test
public void testBuildInContextsOpenOns(){
openOn("dependentContext", "DependentContext");
openOn("applicationContext", "ApplicationContext");
openOn("singletonContext", "SingletonContext");
openOn("unboundRequestContext", "RequestContext");
openOn("bboundRequestContext", "BoundRequestContext");
openOn("bboundRequestContext2", "BoundRequestContext");
openOn("httpRequestContext", "HttpRequestContext");
openOn("httpRequestContext2", "HttpRequestContext");
openOn("ejbRequestContext", "EjbRequestContext");
openOn("ejbRequestContext2", "EjbRequestContext");
openOn("boundConversationContext", "BoundConversationContext");
openOn("boundConversationContext2", "BoundConversationContext");
openOn("httpConversationContext", "HttpConversationContext");
openOn("httpConversationContext2", "HttpConversationContext");
openOn("boundSessionContext", "BoundSessionContext");
openOn("boundSessionContext2", "BoundSessionContext");
openOn("httpSessionContext", "HttpSessionContext");
openOn("httpSessionContext2", "HttpSessionContext");
}
private void openOn(String text, String proposal){
TextEditor te = new TextEditor("BuiltInContexts.java");
te.selectText(text);
te.openOpenOnAssistant().chooseProposal("Open @Inject Bean "+proposal);
new DefaultEditor(proposal+".class");
}
}