package org.jboss.tools.cdi.bot.test.weld.template;
import static org.junit.Assert.*;
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.common.wait.WaitWhile;
import org.jboss.reddeer.core.condition.JobIsRunning;
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.swt.impl.menu.ContextMenu;
import org.jboss.reddeer.workbench.condition.EditorHasValidationMarkers;
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-12644
public class WeldParametersAnnotationTemplate extends CDITestBase{
public static final String WELD_SE_JAR=System.getProperty("jbosstools.test.weld-se.home");
@Before
public void addLibs(){
projectHelper.addLibrariesIntoProject(PROJECT_NAME, WELD_SE_JAR);
ProjectExplorer pe = new ProjectExplorer();
pe.open();
pe.getProject(PROJECT_NAME).select();
new ContextMenu("Refresh").select();
new WaitWhile(new JobIsRunning(),TimePeriod.LONG);
NewJavaClassWizardDialog jd = new NewJavaClassWizardDialog();
jd.open();
NewJavaClassWizardPage jp = new NewJavaClassWizardPage();
jp.setName("ParametersExtension");
jp.setPackage("cdi.parameters");
jd.finish();
}
@Test
public void testParametersAnnotation(){
TextEditor te = new TextEditor("ParametersExtension.java");
te.insertLine(2, "import javax.enterprise.context.ApplicationScoped;");
te.insertLine(3, "import javax.inject.Inject;");
te.insertLine(4, "import java.util.List;");
te.insertLine(5, "import org.jboss.weld.environment.se.bindings.Parameters;");
te.insertLine(6, "@ApplicationScoped");
AbstractWait.sleep(TimePeriod.NORMAL);
te.insertLine(8, "@Inject @Parameters List<String> parameters;");
te.insertLine(9, "@Inject @Parameters String[] paramsArray;");
new WaitWhile(new JobIsRunning());
new WaitWhile(new EditorHasValidationMarkers(te),TimePeriod.NORMAL, false);
assertEquals(0,te.getMarkers().size());
te.save();
new WaitUntil(new JobIsRunning(),TimePeriod.SHORT,false);
new WaitWhile(new JobIsRunning());
assertEquals(0,te.getMarkers().size());
}
}